Две функции, но только первая функция, отображающая вывод - PullRequest
0 голосов
/ 24 марта 2020

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

Если возможно, я хотел бы передать информацию о студентах в другую функцию, чтобы не нужно снова открывать файл в этой функции. Но я не могу найти что-либо, имеющее отношение к этому, где-нибудь, некоторые советы или рекомендации были бы великолепны.

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;
...