The point of this programme is to write to a file the first, middle, last name and test score of a student and if their score is between 40 and 50 points it has to output their names. However, it is skipping the names of some students or outputting them twice. example: input: n=2
Jon Jones Jameson 41
George Peterson Harrison 51
output: none
input: n=2 Jon Jones Jameson 49
George Peterson Harrison 43
output: George Peterson Harrison George Peterson Harrison
and that's my code:
#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;
}