يبون السؤال باستخدام الداينمك أراي.. كل شي يطلع ل صح قبل ما استخدم البوينتر ..
لين استخدم البوينتر يطلع لي ما في أخطاء بس ما يصير ليه ران ...
# include <iostream>
# include <string>
# include <fstream>
int const size=10;
using namespace std;
struct studentType
{
int id;
double score;
char S_Array[20];
char grade;
double Total;
};
void ReadInfo (ifstream &fin, studentType *std[], char C_Array[])
{
string x;
char y ;
fin>>x;
for ( int ii =0 ;ii<20;++ii)
{
fin>>y;
C_Array[ii]=y;
}
getline (fin,x);
getline (fin,x);
int j;
for (int i=0; i<size; i++)
{
fin>>std->id ;
for (j=0; j<20; j++)
{
fin>>y;
std->S_Array[j]=y;
}
}
}
void findScore (studentType *std[] , char C_Array[])
{
double score ;
for (int z=0; z<size; z++)
{
score =0;
for (int s=0; s<20; s++)
{
if (std[z]->S_Array== C_Array)
score+=2;
else if (std[z]->S_Array!= C_Array)
score+=1;
else
score+=0;
}
std[z]->score = score ;
}
}
void Total (studentType *std[] )
{
for (int j=0; j<size; j++)
std[j]->Total = ( std[j]->score / 40 ) * 100;
}
void findGrad (studentType *student[] )
{
char grade;
for ( int i=0 ; i< size ; ++i)
{
double markes = student->Total;
if (markes<=100 && markes>=90)
grade = 'A';
else if (markes<=89.99 && markes>=80)
grade = 'B';
else if (markes<=79.99 && markes>=70)
grade = 'C';
else if (markes<=69.99 && markes>=60)
grade = 'D';
else
grade = 'F';
student->grade =grade;
}
}
void PrintInfo (studentType *std[])
{
cout<<"Student ID Answer score grade "<<endl;
for (int i=0; i<size; i++)
{
cout<<std->id <<", ";
cout<<std->S_Array <<" ";
cout<<std->score<<" ";
cout<<std->grade<<" " ;
cout<<endl<<endl;
}
}
void main ()
{
char C_Array[20];
studentType *student [size];
ifstream fin;
fin.open ("student.txt");
ReadInfo (fin, student , C_Array);
findScore(student, C_Array);
Total(student);
findGrad (student);
PrintInfo(student);
fin.close ();
}