Как рассчитать среднее?

Меня попросили подсчитать среднюю оценку за 10 учеников. Сначала я смог прочитать и извлечь данные из файла data.txt, который выглядит следующим образом:

№ Имя Test1 Test2 Test3

1 Ахмад 58 97 83

2 Долла 78 76 70

3 Рамеш 85 75 84

4 Маймуна 87 45 74

5 Роберт 74 68 97

6 Кумар 77 73 45

7 Интан 56 23 27

8 пинг 74 58 18

9 Идаю 47 98 95

10 Рослан 79 98 78

Затем я должен рассчитать среднее значение для каждого учащегося и определить оценки.

Вот что я сделал до сих пор.

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>

using namespace std;

int main()

{
    ifstream inFile1;
    string temp;
    int line=0;

    inFile1.open("data.txt");
    if(inFile1.fail())
    {
        cout << "File cannot be opened" << endl;
        exit(1);
    }

    while(getline(inFile1, temp))
    {
        line++;
    }
    inFile1.close();

    return 0;
}

Эта программа должна состоять как минимум из двух функций-прототипов: средняя () и классная (). Вот где я застрял.

1 ответ

Вы можете проверить ответы здесь: найти среднюю зарплату из файла в C++.

В основном, когда вы перебираете строки файла, вы должны разделить temp Строка в токены, которые вас интересуют. Как? Вариант будет использовать getline с разделителем ' ' или заглянуть в std::noskipws потоковый манипулятор или просто использовать operator>> читать из файла - зависит от деталей ваших требований.

Если я правильно понимаю ваш случай, я бы пошел с operator>> чтобы получить имя студента, а затем читать с помощью getline(inFile, gradesText) читать до конца строки, чтобы получить все оценки для текущего студента.

Затем я бы использовал отдельную функцию для разделения строк на вектор оценок. Как сделать разбиение вы можете проверить в разделе Разделить строку в C++?, Таким образом, вы можете подготовить такую ​​функцию, как vector<int> split(const string& line, char delim = ' '), В рамках реализации вы, вероятно, должны использовать std::stoi для преобразования строки в int.

После этого, когда у вас уже есть правильная коллекция, вы можете рассчитать среднее значение из нее с помощью:

const double sum = std::accumulate(grades.begin(), grades.end(), 0.0);
const double gradesMean = sum / grades.size();
Другие вопросы по тегам