我是一名cis221学生,我被分配了一段我根本想不通的作业......
下面的代码是我的“Fraction”类的重载输入操作符。
istream& operator>>(istream& in, Fraction& fract)
{
cout << "Enter the whole number part for the fraction ";
in >> fract.Whole;
cout << "Enter the Numerator ";
in >> fract.Numerator;
cout << "Enter a Denominator ";
in >> fract.Denominator;
try
{
if (fract.Denominator == 0)
throw(FractionException(fract, "Deno input was 0, setting to 1"));
}
catch(FractionException e)
{
fract.Denominator = 1;
e.DisplayMessage();
}
fract.reduceFraction();
return in;
}
在main中调用。
void main()
{
//Declarations
srand((unsigned)time(NULL));
int i = 0;
Fraction fract[4];
for (i=0; i<5; i++)
{
cin >> fract[i];
}
for (i=0; i<5; i++)
{
cout << fract[i];
}
}
据我所知,这段代码应该完美执行;但是,代码不断循环。即使永远不会抛出异常,也是如此。
我把手表放在循环控制变量“i”上,从字面上看它计数从0到4 ......我不知道出了什么问题......
提前致谢!
答案 0 :(得分:4)
Fraction fract[4];
for (i=0; i<5; i++)
这不好。使用Fraction fract[5]
,您将不会覆盖随机内存。