Смысл этой программы - записать в файл имя, отчество, фамилию и результаты теста учащегося, и если его оценка составляет от 40 до 50 баллов, он должен вывести их имена. Однако он пропускает имена некоторых учеников или выводит их дважды. пример: вход: n = 2
Джон Джонс Джеймсон 41
Джордж Петерсон Харрисон 51
выход: нет
вход: n = 2 Джон Джонс Джеймсон 49
Джордж Петерсон Харрисон 43
вывод: Джордж Петерсон Харрисон Джордж Петерсон Харрисон
и это мой код:
#include <iostream>
#include <fstream>
using namespace std;
struct Student{
char first_name[20];
char second_name[20];
char last_name[20];
double score;
};
int main(){
Student students;
fstream file;
file.open("c:/students.txt",ios::in);
int n,i;
cout<<"n:";
cin>>n;
for(i=0;i<n;i++ ){
cout<<"First name: ";
cin>>students.first_name;
cout<<"Second name: ";
cin>>students.second_name;
cout<<"Last name: ";
cin>>students.last_name;
cout<<"Score: ";
cin>>students.sr_uspeh;
file<<students.first_name<<" ";
file<<students.second_name<<" ";
file<<students.last_name<<" ";
file<<students.score<<" ";
}
file.seekg(0);
for(int i=0;i<n;i++){
file>>students.first_name;
file>>students.second_name;
file>>students.last_name;
file>>students.score;
if(students.score>=40 && students.sr_uspeh<=50){
cout<<students.first_name<<" ";
cout<<students.second_name<<" ";
cout<<students.last_name<<endl;
}
}
file.close();
return 0;
}