Может ли кто-нибудь оказать мне небольшую помощь в завершении этого задания программы? (C ++) - PullRequest
0 голосов
/ 06 апреля 2020

Итак, целью этой программы является ввод данных из файла .txt, который содержит длинный список идентификаторов учащихся и трех классов, и вывод этих данных в другой файл .txt, но с идентификаторами и в среднем оценок. Я немного озадачен тем, как заставить мою программу читать строку next после чтения одной строки. Прямо сейчас, как этот код просто печатает первую строку.

int main()

{

int id;
int score1;
int score2;
int score3;
ofstream output;
ifstream input;

int grade = 0.3 * score1 + 0.3 * score2 + 0.4 * score3;

  char letgrade;

if (grade >= 90.0)
char letgrade = 65;
else if (grade >= 80.0)
char letgrade = 66;
else if (grade >= 70.0)
char letgrade = 67;
else if (grade >= 60.0)
char letgrade = 68;
else char letgrade = 69;

output.open("studentGrade.txt");

do 
{

input.open("StudentInfo.txt");

input >> id >> score1 >> score2 >> score3;

output << id << " " << letgrade << endl;

input.close();

}

while (!input.eof());

output.close();

return 0;

 }

Насколько я понимаю, здесь полезна функция getline. Просто мне нужна помощь относительно того, как его использовать.

1 Ответ

2 голосов
/ 06 апреля 2020

Вы повторно открываете файл заново в input.open("StudentInfo.txt");

Ваш do {} while l oop должен выглядеть примерно так (, хотя вам нужно быть осторожным с while (!stream.eof) {}):

input.open("StudentInfo.txt");
while (!input.eof()) {
  input >> ...;
  output << ... << endl;
}

В опубликованном коде есть другие проблемы, которые учитель, вероятно, охарактеризовал бы как недостатки: неорганизованные процедуры, раздутый предикат (выражение if), неспособность придерживаться распознаваемой переменной и стиль кодирования - но ничего такого, что быстрый обзор материала, представленного в лекциях или примечаниях к разделам о файлах, циклах и краткое прочтение уважаемого руководства по стилю C ++, не исправит.

C ++ - сложный язык и бесчисленное количество ветеранов «оторвало свои ноги», несмотря на превосходное владение языком. Как новичок, вы должны ожидать, что ответы на вопросы (такие как этот) потребуют 30-45 минут дополнительного исследования, чтобы определить термины, поместить их в более широкий контекст или развить интуицию для механизма.

...