所以我的问题必须处理代码中的计算平均值函数。该函数接受 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/