Как мне найти среднее значение для всего класса?

#c #c 11

#c #c 11

Вопрос:

 #include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
struct Students
{
    char name[30];
    char first_name[30];
    int n1;
    int n2;
    int n3;
}student list[10];

    int n;
void reading_student_list()
{
    int i;
    ifstream f("in.txt");
    f>>n;
    for(i=0;i<n;i  )
    {
        f>>student_list[i].name;
        f>>student_list[i].first_name;
        f>>student_list[i].n1;
        f>>student_list[i].n2;
        f>>student_list[i].n3;
    }
    f.close();
}
void showing_student_list()
{
    int i;
    ofstream g("out.txt");
    g<<"n Student list: ";
    for(i=0;i<n;i  )
    {
        g<<"nn";
        g<<student_list[i].name<<" ";
        g<<student_list[i].first_name<<" ";
        g<<student_list[i].n1<<" ";
        g<<student_list[i].n2<<" ";
        g<<student_list[i].n3<<" ";
        g<<endl<<"Average: "<<float(student_list[i].n1 student_list[i].n2 student_list[i].n3)/3;
    }
    cout<<"n Open file out.txt";
    g.close();
}
    int main()
    {
        reading_student_list();
        showing_student_list();
    }
  

Я сделал среднее значение для оценок на одного ученика, но я не могу понять, как найти среднее значение для всего класса.

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

Комментарии:

1. сложите все средние значения учащихся и разделите на n ?

2. Как я могу добавить средние значения всех учеников? Вот чего я не понимаю.

3. Напишите цикл, проходящий через учеников по одному и суммирующий оценки. Вы уже написали цикл для печати каждого учащегося, он ничем не отличается.

4. @john Не могли бы вы показать мне пример этого?

5.Одна из причин не использовать имена типа n1 n2 и n3 заключается в том, что никто, кроме вас, не может сказать, что они означают. Я не знаю, какая из ваших переменных представляет оценки учащихся.

Ответ №1:

Вот как бы вы сложили все n1 значения (что бы это ни значило).

 int total = 0;               // start the total at zero
for (int i = 0; i < n; i  )  // for each student
    total  = list[i].n1;     // add list[i].n1 to total
  

Надеюсь, вы сможете адаптировать это в соответствии с вашими конкретными требованиями.

Комментарии:

1. Значит, я должен сделать это и для n2 и n3? Должен ли я делать это в функции void?

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