C ++ Студенты набрали среднюю проблему с массивом калькуляторов - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь написать программу, которая вычисляет последние баллы учеников как среднесрочные, викторина 1, викторина 2 и финал, а затем находит, что их средний балл зависит от количества учеников.Программа покажет средний класс.Пользователь должен ввести оценки.Я новичок в C ++, и моя проблема в настоящее время, я не могу найти способ соединить это цикл for с массивом для среднего класса.Мой код не подходит для этого?Я не знаю, что делать.

#include <iostream>
using namespace std;

int main()
{
    int mt, q1, q2, fnl, stdn, num;
    double cls[5], std, avg;

    cout << "Enter a number of students: ";
    cin >> num;

    for (stdn=0; stdn<num; stdn++) {
        cout<<"Enter mt, q1, q2, fnl of a "<<stdn+1<<". student in order:"<<endl;
        cin>>mt>>q1>>q2>>fnl;

        std = mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;

        cout<<stdn+1<<". students total score is "<<std<<endl;
    }
}

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Тип int всегда округляет значение после десятичной точки.Итак, (int) 3.84 == 3, и, следовательно, ваша переменная std, вероятно, будет иметь неправильное значение.Определите все переменные как двойные для начала.Чтобы рассчитать среднее значение, просто добавьте оценки, а затем поделитесь на количество студентов в конце.

double mt, q1, q2, fnl, stdn, num, grades_sum = 0, avg;
...
for(stdn=0; stdn<num; stdn++){
    ...
    grades_sum += mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;
    ...
}
avg = grades_sum/num;
0 голосов
/ 13 декабря 2018

Вы можете сложить все оценки студентов, а затем в конце разделить их на общее количество студентов.Это даст вам общее среднее значение по классу.Кроме того, я избежал целочисленного деления, заменив ваши дроби десятичными, которые добавляют до 1. Я также отредактировал ваш цикл for, чтобы начать с 1 и перейти к числу, чтобы избежать добавления 1 ко всему.

#include <iostream>
using namespace std;

int main()
{
    int mt, q1, q2, fnl, stdn, num;
    double cls[5], std;
    double classAvg = 0; // add a new variable

    cout << "Enter a number of students: ";
    cin >> num;

    for (stdn=1; stdn <= num; stdn++) {
       cout << "Enter mt, q1, q2, fnl of a " << stdn << ". student in order:" << endl;
       cin >> mt >> q1 >> q2 >> fnl;
       std = (mt * 0.3) + (q1 * 0.1) + (q2 * 0.1) + (fnl * 0.5);
       cout << stdn << ". students total score is " << std << endl;

       classAvg = classAvg + std; // start adding the totals of all the students
    }
    avg = classAvg/num; // find the total average by dividing by total students
    cout << "Class Average is " << classAvg << endl; // display average.
}
0 голосов
/ 13 декабря 2018

Вам не нужен массив для среднего класса.Просто сложите все оценки студентов и поделите на количество студентов.Для этого нужна только одна переменная (я назвал ее std_sum), а не массив.Как это

double std_sum = 0.0;
for(stdn=0; stdn<num; stdn++){
    ...
   std = mt * 30/100 + q1 * 10/100 + q2 * 10/100 + fnl * 50/100;
   std_sum = std_sum + std; // add up all student scores
}
avg = std_total/num;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...