0
我想要一个程序来读取数据文件中的成绩和其他信息,然后输出每个学生的成绩和平均值,而不是知道有多少学生将在课堂上。如何获取程序来读取数据文件,直到数据文件以C++结尾
我的数据文件看起来像这样:
杰克逊Greaves的1 2 3 4 5 6 7 8 9 10 1 1 1 1 1 1 1 1 100 100
丹尼尔德尔加迪略1 2 3 4 5 6 7 8 9 10 2 2 2 2 2 2 2 2 95 13
Nolyn prestion 10 10 10 10 10 10 10 10 10 10 8 8 8 8 8 8 8 8 100 0
这里是节目我有这么远(它只读第一行,并不会循环读取其他行,如何获得此循环和逐行循环直到文件结束?):
//Lab 1, 9/17/14
//George W. Bush
//Miley Cyrus
//Bob Dylan
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
float lab1, lab2, lab3, lab4, lab5, lab6, lab7, lab8, lab9, lab10;
float hw1, hw2, hw3, hw4, hw5, hw6, hw7, hw8;
float midterm;
float finall;
float labScore;
float labAvg;
float hwScore;
float hwAvg;
float finalGrade;
string letterGrade;
string studentNameFirst;
string studentNameLast;
ifstream inFile;
inFile.open("inputGrades.txt", ios::in); // opens input file
if (!inFile) {
cout << "Cannot open input file. "; // file not open
return 1;
}
while (!inFile.eof()) {// until file ends
inFile >> studentNameFirst >> studentNameLast >> lab1 >> lab2 >> lab3 >> lab4 >> lab5 >> lab6 >> lab7 >> lab8 >> lab9 >> lab10 >> hw1 >> hw2 >> hw3 >> hw4 >> hw5 >> hw6 >> hw7 >> hw8 >> midterm >> finall;
labScore = ((lab1 + lab2 + lab3 + lab4 + lab5 + lab6 + lab7 + lab8 + lab9 + lab10)/100) * 100;
labAvg = (lab1 + lab2 + lab3 + lab4 + lab5 + lab6 + lab7 + lab8 + lab9 + lab10)/10;
hwScore = ((hw1 + hw2 + hw3 + hw4 + hw5 + hw6 + hw7 + hw8)/80) * 100; // calculate homework scores
hwAvg = (hw1 + hw2 + hw3 + hw4 + hw5 + hw6 + hw7 + hw8)/8; //calculates lab averages
finalGrade = (.2 * (labScore) + .1 * (hwScore) + .3 * (midterm) + .4 * (finall)); // calculates percent final grade
// Assigns a letter grade based on percent
if (finalGrade >= 90)
letterGrade = "A";
else if (finalGrade >= 85)
letterGrade = "A-";
else if (finalGrade >= 80)
letterGrade = "B+";
else if (finalGrade >= 75)
letterGrade = "B";
else if (finalGrade >= 70)
letterGrade = "B-";
else if (finalGrade >= 65)
letterGrade = "C+";
else if (finalGrade >= 60)
letterGrade = "C";
else if (finalGrade >= 55)
letterGrade = "C-";
else if (finalGrade >= 50)
letterGrade = "D+";
else if (finalGrade >= 45)
letterGrade = "D";
else if (finalGrade >= 40)
letterGrade = "D-";
else letterGrade = "F";
cout << "Name: " << studentNameFirst << " " << studentNameLast << "Lab Average: " << labAvg << "Hw Average: " << hwAvg << "Final Grade: " << finalGrade << "Letter Grade: " << letterGrade << endl;
return 0;
}
}
您期待'eof'预测将来会发生的读取结果,而不是测试您的读取是否成功。 – 2014-09-29 23:02:20