我应该声明一个结构,其中包含未知数量学生的姓名和成绩。我是这样做的:
struct student {
char name[30];
int grade1, grade2, grade3;
};
然后,我有一个文本文件,其中包含不同行中每个学生的信息。我是这样读的。
student info[20];
int nr_students,i=0,k=0;
fstream inFile;
inFile.open("in.txt");
fstream outFile;
outFile.open("out.txt");
while(!EOF) {
inFile>>info[i].name;
inFile>>info[i].grade1;
inFile>>info[i].grade2;
inFile>>info[i].grade3;
i++;
}
nr_students=i;
avg_promovability(outFile,info, nr_students);
我认为这不能正常工作,因为 nr_students
显然仍然是 0。另外,第一个函数:
void avg_promovability(fstream &outFile,student *info, int nr_students)
{
int i;
float sum=0,j=0,avg;
for (i=0;i<nr_students;i++)
if(info[i].grade1 >=5 && info[i].grade2>=5 && info[i].grade3>=5 ) {
sum=sum + info[i].grade1 + info[i].grade2 + info[i].grade3;
j++;
}
avg=sum/(3*j);
outFile<<avg;
}
它应该计算通过的学生的平均成绩(即所有成绩>=5)。它并没有真正做到这一点,out.txt 文件始终是空的。关于我做错了什么有什么建议吗?
最佳答案
这不是检查文件结尾的方式。尝试一下
while (inFile>>info[i].name) {
inFile>>info[i].grade1;
inFile>>info[i].grade2;
inFile>>info[i].grade3;
i++;
}
关于c++ - 使用从文件读取的结构的函数没有返回输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23728406/