从文件的一行中查找数字的平均值,避免使用第一个单词

时间:2018-04-19 00:14:17

标签: c++ io

我有一个文本文件,其格式如下:

U123 78 90 65 85

U234 87 98 90 56

U345 89 90 98 87

U456 45 56 67 78

第一个值(Uxxx)是"学生编号"并且同一行上的每个其他值都是测试分数(第一个是考试1,第二个考试2等)

我正在尝试获取特定学生(由用户指定)的所有考试的平均值,但是在如何存储特定行的考试值时遇到问题。

我有一个不同的功能,显示指定学生的分数,我试图修改它也适用于此,但我遇到了麻烦。以下是该功能的代码:

void DisplayStudentScores()
{
    string stuNum;
    ifstream inFile;

    inFile.open(scores.txt);

    //for testing purposes
    if(!inFile)     {
        cout << "File not found" << endl;
        exit(1);
    }
    //end of test

    cout << "Enter the Student ID of who's scores you would like to see: ";
    cin >> stuNum;
    cout << endl;

    string line;
    while(getline(inFile, line)){
        if(line.find(stuNum) != string::npos){
            cout << line << endl;
            break;
        }
        else{
            cout << "Student not found" << endl;
            break;
        }           
    }
}

1 个答案:

答案 0 :(得分:0)

字段整齐地用空格分隔,因此流操作符比getline更好:

string stu;
int score1, score2, score3, score4;
infile >> stu >> score1 >> score2 >> score3 >> score4;

你可以把它放在循环中:

while(infile >> stu >> score1 >> score2 >> score3 >> score4){
  if(stu == stuNum){
    // calculate and print average
    return;
  }
}
cout << "Student " << stuNum << " not found" << endl;