[英]For Loop Not Stopping
我在一個不會停止的函數中有一個for循環。 這是整個函數,用於查找人的成績,將它們添加到一起,然后在屏幕上顯示平均值:
float Student::average() {
cout << "How many grades would you like to enter? (Up to ten)\n";
float x;
cin >> x;
cout << "What is your first grade?";
cin >> grade[0];
int i = 1;
for (i; i = x; i++) {
cout << "What is the next number?\n";
cin >> grade[i];
}
averageGrade = std::accumulate(grade, grade+10, 0.0);
averageGrade = averageGrade / 10;
return averageGrade;
}
這是for循環:
for (i; i = x; i++) {
cout << "What is the next number?\n";
cin >> grade[i];
}
錯誤也輸出(但仍然允許程序運行)說:
1> c:\\ users \\ hastudent \\ documents \\ visual studio 2008 \\ projects \\ weapon \\ weapon \\ weapon.cpp(25):警告C4244:'=':從'float'轉換為'int',可能會丟失數據
1> c:\\ users \\ hastudent \\ documents \\ visual studio 2008 \\ projects \\ weapon \\ weapon \\ weapon.cpp(30):警告C4244:'=':從'double'轉換為'float',可能會丟失數據
程序達到要求下一個數字的程度。 然后你輸入數字,它一直在問你這個。
for
循環應為:
for (int i = 1; i < x; i++)
你現在擁有的( i = x
)是x
到i
的賦值 ,而你可能想要進行比較 。 在這種情況下,使用的正確比較是“小於”( i < x
)。
你的for循環永遠運行,因為:
如果要進行相等性測試,請使用==。 但是,在這種情況下,你想要一個<thest。
你試過在for循環中打印i的值嗎? 你從x開始,並繼續遞增。
這應該是:
for(int i=0; i<x; i++) { /* do something */ }
通常你從0開始計數,而不是1。
主要的問題是你在哪里做i = x你想要放置在循環的每次迭代中必須保持的條件(稱為循環不變量 ),即如果你以i = 0開始,則i <x,或者如果你從i = 1開始計算,i == x正如其他人所建議的那樣。
for
循環的第二部分是“何時繼續”條件,而不是“何時停止”。
既然你從索引1開始(非常規但在C ++中沒有聞所未聞),你應該迭代到有問題的數字:
for(i = 1; i <= x; ++i)
請注意,即使條件是“何時退出” =
是C ++中的賦值,而==
是相等比較。
在FOR循環中使用!=(比較運算符)而不是=(賦值運算符)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.