Есть ли простой способ прочитать файл данных и распечатать результаты в обратном порядке?
Я делаю задание для колледжа, и у меня это задание в основном выполнено, последний шаг, который у меня есть, это распечатать имена файлов данных в обычном порядке, а затем распечатать результаты в обратном порядке. Так что Диксон, Перри будет первым, а Джонсон, Джерри последним.
Файл данных, который я использую, это:
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