我正在編寫一個程序,該程序從多列數據組成的多行數據文本文件中讀取,這4行代表多個學生在一個教室中進行的4個測試。C++中的奇怪編碼錯誤
讀完一行後,程序會計算出每個學生的平均值,然後給他們一個字母等級。我編碼它這樣做。 問題是,雖然平均值沒有問題地計算,但第一個學生的信件成績不會顯示出來。我忽略了一個錯誤嗎?
下面的代碼:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream calcGrades;
calcGrades.open ("grades.txt");
int test1, test2, test3, test4;
int studentNum = 1;
while(calcGrades.good())
{
calcGrades >> test1 >> test2 >> test3 >> test4;
int average = (test1 + test2 + test3 + test4)/4;
char letterGrade;
if(average<60)
letterGrade='F';
if(average<=60 && average<70)
letterGrade='D';
if(average>=70 && average<80)
letterGrade='C';
if(average>=80 && average<90)
letterGrade='B';
if(average>=90)
letterGrade='A';
cout << "Student " << studentNum
<< "'s average is " << average
<< " they currently have a " << letterGrade
<< "." << endl;
studentNum++;
}
return 0;
}
下面是它從讀取文件的內容:
44 55 77 88
79 88 100 99
77 99 98 99
100 88 89 100
55 56 40 77
100 100 99 95
88 84 87 88
96 97 99 100
30 44 77 55
79 77 88 0
54 52 60 77
88 77 88 77
44 77 10 95
感謝您給予任何幫助,我一直在苦苦思索這個和 我只是無法看到出了什麼問題。
參見http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong – user657267
不知道是誰因缺乏代碼不工作的信息而投票結束。觀察到的輸出清楚地提到,代碼是MCVE,並提供了輸入數據。相反,一旦說錯字被解決,它應該被標記爲錯字和不可重現。 – WhozCraig
「我編碼這樣做。」 - 電腦完全**我們告訴他們要做的事情。如果觀察到的結果不像預期的那樣,我們沒有告訴他們我們認爲我們告訴他們什麼,並且必須*檢查我們的假設*。 ;-) – DevSolar