我是一個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];
}
}
從我的理解,這段代碼應該完美執行;但是,代碼不斷循環。即使從不拋出異常也是如此。
我把手錶上的閉環控制VAR「i」和字面上看着它從0數到4 ...我不知道什麼是錯的...提前
謝謝!
你100%肯定這是你的實際代碼?你正在使用哪種編譯器?我問,因爲我會期待一個編譯時錯誤,因爲你的main()返回void而不是int。 – razlebe 2011-04-18 00:07:46
我知道大多數人返回int,但微軟2010讓我返回void – 2011-04-18 00:13:17
不夠公平。但是[最好是迴歸int的習慣](http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3) – razlebe 2011-04-18 00:20:07