【发布时间】:2017-06-01 10:53:05
【问题描述】:
这个程序的重点是打开并阅读一个文本文件,其中包含学生的学术代码 -> aem 和他/她的总体成绩。然后,如果某个学生的成绩大于5,它会在名为成功的文本上写他/她的学术代码,以及成绩等。 我的问题是它正确计算了这 5 名学生的平均成绩,但没有计算最高和最低成绩。当我运行程序时,出现的窗口显示课程的正确平均值,但最高和最低成绩始终为 0。 谁能帮我?可能我没有以正确的方式比较它们。
#include <iostream>
#include <fstream>
using namespace std;
const int arraySize = 5;
int main(int argc, char** argv)
{
ifstream d;
d.open("students.txt");
ofstream b;
b.open("succesful.txt");
ofstream c;
c.open("unsuccesful.txt");
int aem;
double a[arraySize];
int min, max;
double grades, average;
grades = average = 0;
min = max = 0;
for (int i = 0; i < arraySize; i++)
{
d >> aem >> a[i];
grades = grades + a[i];
average = grades / arraySize;
if (a[i] >= 5) b << aem << " " << a[i] << endl;
else c << aem << " " << a[i] << endl;
}
for (int i = 0; i < arraySize; i++)
{
if (a[i] = max)
max = a[i];
break;
if (a[i] = min)
min = a[i];
break;
}
cout << "The average is:" << average;
cout << "Maximum is:" << max;
cout << "Minimum is:" << min;
d.close(); c.close(); b.close();
system("pause");
return 0;
}
【问题讨论】:
-
请将代码粘贴为文本,而不是图像。
-
您的最后一个循环除了将
a[1]设置为max(0) 之外什么都不做。想一想,它会帮助你找到问题:) -
我需要以某种方式比较它们吗?之前,为了功能?
-
=是分配。相等比较是==。 (一个体面的编译器应该警告你这一点。) -
另外,看看那些
breaks 并仔细考虑会发生什么。 (试着向自己解释为什么把它们放在那里。)
标签: c++ max average min ifstream