Я протестировал обе функции по отдельности, и они обе прекрасно работают. Первая функция предполагает отображение информации об учениках, а вторая функция должна вычислять и отображать среднее значение в буквенном балле. Оба прекрасно работают по отдельности, но когда они вместе, какая функция всегда появляется первой, кажется, что она работает, а вторая функция игнорируется или что-то в этом роде.
Если возможно, я хотел бы передать информацию о студентах в другую функцию, чтобы не нужно снова открывать файл в этой функции. Но я не могу найти что-либо, имеющее отношение к этому, где-нибудь, некоторые советы или рекомендации были бы великолепны.
void readFile(ifstream &file) {
string names[20];
int grade[20];
string courses[20];
string courses2[20];
string courses3[20];
string courses4[20];
int exam1[20];
int exam2[20];
int exam3[20];
int exam12[20];
int exam22[20];
int exam32[20];
int exam13[20];
int exam23[20];
int exam33[20];
int exam14[20];
int exam24[20];
int exam34[20];
int i = 0;
while (file >> names[i] >> grade[i]>> exam1[i] >> exam2[i] >> exam3[i] >> courses[i]>> exam12[i] >> exam22[i] >> exam32[i] >> courses2[i] >> exam13[i] >> exam23[i] >> exam33[i] >> courses3[i]>> exam14[i] >> exam24[i] >> exam34[i] >> courses4[i]) {
cout << names[i] << " " << exam1[i] << " " << exam2[i] << " " << exam3[i] << " " << courses[i] << " " << exam12[i] << " " << exam22[i] << " " << exam32[i] << " " << courses2[i] << " " << exam13[i] << " " << exam23[i] << " " << exam33[i] << " " << courses3[i] << " " << exam14[i] << " " << exam24[i] << " " << exam34[i] << " " << courses4[i] << endl;
}
}
void calAver(ifstream &file){
string names[20];
string courses[20];
string courses2[20];
string courses3[20];
string courses4[20];
int i = 0;
int gradee[20];
int exam1[20];
int exam2[20];
int exam3[20];
int exam12[20];
int exam22[20];
int exam32[20];
int exam13[20];
int exam23[20];
int exam33[20];
int exam14[20];
int exam24[20];
int exam34[20];
int sumC1[20];
int sumC2[20];
int sumC3[20];
int sumC4[20];
int grade[20];
int grade1[20];
int grade2[20];
int grade3[20];
string grades[20];
string grades1[20];
string grades2[20];
string grades3[20];
while (file >> names[i] >> gradee[i] >> exam1[i] >> exam2[i] >> exam3[i] >> courses[i] >> exam12[i] >> exam22[i] >> exam32[i] >> courses2[i] >> exam13[i] >> exam23[i] >> exam33[i] >> courses3[i] >> exam14[i] >> exam24[i] >> exam34[i] >> courses4[i]) {
sumC1[i] = exam1[i] + exam2[i] + exam3[i];
grade[i] = sumC1[i] / 3;
if (grade[i] >= 90) {
grades[i] = 'A';
}
else if (grade[i] < 90 && grade[i] >= 80) {
grades[i] = 'B';
}
else if (grade[i] < 80 && grade[i] >= 70) {
grades[i] = 'C';
}
else if (grade[i] < 70 && grade[i] >= 60) {
grades[i] = 'D';
}
else if (grade[i] < 60) {
grades[i] = 'F';
}
sumC2[i] = exam12[i] + exam22[i] + exam32[i];
grade1[i] = sumC2[i] / 3;
if (grade1[i] >= 90) {
grades1[i] = 'A';
}
else if (grade1[i] < 90 && grade1[i] >= 80) {
grades1[i] = 'B';
}
else if (grade1[i] < 80 && grade1[i] >= 70) {
grades1[i] = 'C';
}
else if (grade1[i] < 70 && grade1[i] >= 60) {
grades1[i] = 'D';
}
else if (grade1[i] < 60) {
grades1[i] = 'F';
}
sumC3[i] = exam13[i] + exam23[i] + exam33[i];
grade2[i] = sumC3[i] / 3;
if (grade[i] >= 90) {
grades2[i] = 'A';
}
else if (grade2[i] < 90 && grade2[i] >= 80) {
grades2[i] = 'B';
}
else if (grade2[i] < 80 && grade2[i] >= 70) {
grades2[i] = 'C';
}
else if (grade2[i] < 70 && grade2[i] >= 60) {
grades2[i] = 'D';
}
else if (grade2[i] < 60) {
grades2[i] = 'F';
}
sumC4[i] = exam14[i] + exam24[i] + exam34[i];
grade3[i] = sumC4[i] / 3;
if (grade3[i] >= 90) {
grades3[i] = 'A';
}
else if (grade3[i] < 90 && grade3[i] >= 80) {
grades3[i] = 'B';
}
else if (grade3[i] < 80 && grade3[i] >= 70) {
grades3[i] = 'C';
}
else if (grade3[i] < 70 && grade3[i] >= 60) {
grades3[i] = 'D';
}
else if (grade3[i] < 60) {
grades3[i] = 'F';
}
cout << grades[i] << " "<< grades1[i] << " "<< grades2[i] << " "<< grades3[i] << endl;
}
}
int main()
{
int i = 0;
ifstream files;
files.open("StudentGrade.txt");
if (files.fail()) {
cout << "Error!" << endl;
}
else
cout << " Students: " << endl;
readFile(files);
cout << "Average: " << endl;
calAver(files);
/*while (!files.eof()) {
cout << calAver(files) << endl;
}*/
system("pause");
return 0;