c++ - 如何计算结构数组中的平均值?

标签 c++

所以我的问题必须处理代码中的计算平均值函数。该函数接受 statistics_array 和一个 semester_index。此函数循环遍历 semester_index 指示的结构中的 grades_array,并对所有成绩求和。该总和除以成员结构中的 no_of _grades(由 semester_index 索引)以计算该学期期末考试的平均成绩。最后,这个平均值存储在由 semester_index 索引的结构的 average_grade 成员中。

问题是我该怎么做是我的代码我创建了一个变量名 sum 来添加到这个但是那个方法不起作用我如何修复这个错误我的代码如下。

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
struct ExamType {
    string semester_name;
    int year;
    int num_grades;
    float average_grade;
    int grades_above_average;
    int grades_below_average;
    int grades_array[35];
};

void input_data(ExamType[], ifstream&);
void calculate_statistics(ExamType[]);
void print_results(ExamType[]);
void calculate_average(ExamType[], int);
void calculate_above_average(ExamType[], int);
void calculate_below_average(ExamType[], int);


int main()
{
    char make_type;
    ifstream myfile;
    ExamType statistics_array[5];
    myfile.open("infile.txt");
    input_data(statistics_array,myfile);
}

void input_data(ExamType statistics_array[], ifstream& myfile)
{
    int num_students;
    for (int i = 0; i < 5; i++) {
        myfile >> statistics_array[i].semester_name;
        myfile >> statistics_array[i].year;
        myfile >> num_students;
        statistics_array[i].num_grades=num_students;
        for (int j = 0; i < num_students; i++) {
            myfile >> statistics_array[j].grades_array[i];
        }
    }
}

void calculate_statistics(ExamType statistics_array[])
{
    for (int index = 0; index < 5; index++) {
        calculate_average(statistics_array, index);
        calculate_above_average(statistics_array, index);
        calculate_below_average(statistics_array, index);
    }
}

void calculate_average(ExamType statistics_array[], int index)
{
    int sum = 0;
    for (int i = 0; i < statistics_array[index].num_grades; i++)
    {
      statistics_array[index].grades_array+sum;
    }

}

最佳答案

像这样修改您的函数以计算平均值并将其保存到 average_grade

void calculate_average(ExamType statistics_array[], int index) {
    float sum = 0;
    int n = statistics_array[index].num_grades; // total no. of grades
    for (int i = 0; i < n; i++) {
        sum += statistics_array[index].grades_array[i]; // summing all grades
    }
    statistics_array[index].average_grade = sum/n; // average = total_sum / (num_of_grades)
}

注意:我建议对 sum 使用 float ,因为平均值是一个 float ,这样计算将得到一个浮点值,或者对其进行类型转换。

关于c++ - 如何计算结构数组中的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664470/

相关文章:

c++ - 如何为游戏循环制作计时器?

c# - 线程安全通用规则

c++ - 用 strtok 拆分后大部分字符串消失了吗?

c++ - 使用 std::string 时出现 bad_alloc 错误

c++ - C++ 中二进制文件的可移植性?

c++ - dlopen和隐式库加载: two copies of the same library

c++ 在运算符重载函数中创建、分配新变量并将其与两个对象进行比较。

c++ - 对于中高级 C# 开发人员开始使用 Visual Studio 2010 C++ 有哪些好的引用资料?

c++ - 如果我想制作吃 bean 人游戏?

c++ - `Scheduler::_singleton' 的多重定义,导入 header 两次