Упражнение: результаты теста сохраняются в текстовом файле, как показано ниже. В первой строке указывается максимальная оценка для отдельных задач. Каждая последующая строка содержит одночастную фамилию студента и баллы, полученные им за последующие задания. Количество заданий или учеников заранее неизвестно. Напишите программу «Тест», которая принимает имя такого файла в качестве аргумента и выводит на стандартный вывод комбинированные результаты каждого учащегося и средние результаты каждого задания, как в примере ниже. Программа включает только заголовочные файлы fstream, iostream, sstream, string и vector .
Sample input file input.txt
5.0 5.0 5.0
Einstein 1.5 3.0 0.5
Chopin 0.5 3.5 2.5
Sklodowska-Curie 5.0 5.0 5.0
Sample implementation:
Linux: ./colloquium input.txt
Windows: colloquium.exe input.txt
Out: Einstein 5
Out: Chopin 6.5
Out: Sklodowska-Curie 15
Out: 1 2.33333
Out: 2 3.83333
Out: 3 2.66667
Это то, что я сделал до сих пор:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
int main(int argc, char *argv[])
{
std::ifstream input(argv[1]);
double sum = 0.;
for (std::string line; std::getline(input, line);)
{
std::string word;
for (std::istringstream stream(line); stream >> word;);
double grade;
std::cout<<line<<std::endl;
if (std::istringstream(word) >> grade)
{
sum += grade;
}
}
std::cout << sum << std::endl;
input.close();
}
И я застрял, потому что он читает только цифры из последнего столбца. И я не знаю, что делать дальше