[英]my baseball program should run but I just can't find the problem why it won't. look program over
[英]My program is crashing, I can't find why
我编写了一个程序来在c ++中实现分数。 我之所以做到这一点,是因为这是我在家学习的C ++课程中的一种家庭作业。 该程序可以编译,但是在启动后将很快崩溃。 我自己搜索了一个答案,发现所有内容都是在创建新对象时崩溃。 这是有错误的代码。
//a and b are for the numerators and denominator in the fraction: a/b
ZFraction::ZFraction(int numer, int denom):m_numer(numer), m_denom(denom)//this constructor made it crash
{
if(m_numer != 0)
{
m_numer = m_denom % m_numer;
m_denom = m_denom/m_numer;
}
else
{
cout << "Fraction impossible";
}
}
为什么会崩溃? 提前致谢。
m_numer
的值在两个分区之间变化。 例如,如果您有denom = 20
且denom = 20
numer = 10
,则该行
m_numer = m_denom % m_numer
分配m_numer = 0
。 然后在计算m_denom
除以零。 我建议用原始值进行计算,即
ZFraction::ZFraction(int numer, int denom):m_numer(numer), m_denom(denom)
{
if(numer != 0)
{
m_numer = denom % numer;
m_denom = denom/numer;
}
else
{
cout << "Fraction impossible";
}
}
附带说明一下,考虑抛出异常而不是在cout上编写,那样,如果numer == 0
则不会有带有虚假值的构造对象。
同样,分子是小数顶部而不是底部的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.