Ich habe eine Textdatei mit folgendem Format:
U123 78 90 65 85
U234 87 98 90 56
U345 89 90 98 87
U456 45 56 67 78
Der erste Wert (Uxxx) ist eine "Student Number" und jeder andere Wert in derselben Zeile ist ein Testergebnis (erster ist Prüfung 1, zweite Prüfung 2 usw.)
Ich versuche, den Durchschnitt aller Prüfungen für einen bestimmten Schüler (vom Benutzer angegeben) zu ermitteln, habe jedoch Probleme beim Speichern der Prüfungswerte aus der bestimmten Zeile.
Ich habe eine andere Funktion, die die Punktzahlen für einen bestimmten Schüler anzeigt, und versuche, sie so zu ändern, dass sie auch funktioniert, habe aber Probleme. Hier ist der Code für diese Funktion:
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;
}
}
}
Die Felder sind sauber durch Leerzeichen getrennt, daher ist der Stream-Operator dafür besser geeignet als getline
:
string stu;
int score1, score2, score3, score4;
infile >> stu >> score1 >> score2 >> score3 >> score4;
Das kannst du in eine Schleife schreiben:
while(infile >> stu >> score1 >> score2 >> score3 >> score4){
if(stu == stuNum){
// calculate and print average
return;
}
}
cout << "Student " << stuNum << " not found" << endl;
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen