Есть ли простой способ прочитать файл данных и распечатать результаты в обратном порядке?

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

Файл данных, который я использую, это:

Joe Johnson 89 
Susie Caldwell 67 
Matt Baker 100 
Alex Anderson 87
Perry Dixon 55

Вывод, который я получаю, таков:

 Name          Final Grade
Johnson,Joe            B
Caldwell,Susie         D
Baker,Matt             A
Anderson,Alex          B
Dixon,Perry            F
Class average 79.6

Это код, который я использую:

#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>

using namespace std;







int main()
{
    // Variable declarations: 
    string fName[10];
    string lName[10];
    float grade_Average;
    string file;
    string name;
    int scores[10];
    float sum = 0;
    char grade;
    int i = 0;



    ifstream din;


    // Function body: 

    cout << "Enter the name of the file. " << endl;
    cin >> file;

    din.open(file.c_str());

    if (!din)
    {
        cout << " Cannot open the input file. Please try again." << endl;
        return 0;
    }

    cout << setw(8) << setfill(' ')  << "Name" <<setw(21)<<setfill(' ')<< "Final Grade" << endl;


    while (!din.eof())
    {

        din >> fName[i];
        din >> lName[i];
        din >> scores[i];



        sum = sum + scores[i];



        switch (static_cast<int> (scores[i]/10))
        {

        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            grade = 'F';
            break;
        case 6:
            grade = 'D';
            break;
        case 7:
            grade = 'C';
            break;
        case 8:
            grade = 'B';
            break;
        case 9:
            grade = 'A';
            break;
        case 10:
            grade = 'A';
            break;
        default:
            cout << "Invalid score." << endl;



        }
        name = lName[i] + ',' + fName[i];
        cout << setw(15) << left << setfill(' ') << name << setw(9) << right << setfill(' ')  << grade << endl;
        i++;
        grade_Average = sum / i;



    } 

    cout << "Class average " << grade_Average << endl;


    din.close();

    return 0;
}
 // end function main

0 ответов

Другие вопросы по тегам