C++ 没有得到预期的输出

C++ 没有得到预期的输出,c++,C++,我正在写一份家庭作业,要求用户阅读包含未知数量的SSN和分数的文本文件。然后,程序需要计算最大、最小和平均分数,然后输出带有相关SSN的最大分数以及最小和平均分数 它似乎运行正常,但输出均为“0” 非常感谢您的帮助 代码: #包括 #包括 #包括 #包括 使用名称空间std; int main() { 字符串ssn,maxSSN; int grade=0,totalGrades=0,count=0,maxScore=0,minScore=0; 双avgScore=0; 河流充填; infle.o

我正在写一份家庭作业,要求用户阅读包含未知数量的SSN和分数的文本文件。然后,程序需要计算最大、最小和平均分数,然后输出带有相关SSN的最大分数以及最小和平均分数

它似乎运行正常,但输出均为“0”

非常感谢您的帮助

代码:

#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符串ssn,maxSSN;
int grade=0,totalGrades=0,count=0,maxScore=0,minScore=0;
双avgScore=0;
河流充填;
infle.open(“C:\\lab5a.txt”);
如果(!infle)
{
cout(最大分数)
maxScore=等级;
if(等级<核心)
核心=等级;
}
等级+=总等级;
计数++;
}
如果(计数)
avgScore=总等级/计数;

cout1.您没有阅读
infle
中的任何内容。最有可能的情况是,您希望读取等级值:

 while (!inFile.eof())
 {
     inFile >> grade;
     ...
 grade += totalGrades;
根据@blastburne的反馈,使用
infle.eof()
也是错误的。考虑下面的输入文件:

3
5
9
17
每一行都以
lf
终止。然后,循环将读取5行,因为它在读取了
17
值后未检测到文件的结尾,但将尝试从文件中读取另一个值<循环终止时,code>count
将变为
5
,这是错误的

请改用以下条件:

 while (inFile >> grade)
 {
   ...
要同时读取ssn,请使用以下命令:

while (inFile >> ssn >> grade)
{
   ...
这确保在执行循环体时,已从文件中读取
ssn
grade

2.
totalGrades
的计算操作数顺序错误:

 while (!inFile.eof())
 {
     inFile >> grade;
     ...
 grade += totalGrades;
需要

 totalGrades += grade;
3.您已将
avgScore
声明为double,但

 avgScore = totalGrades / count;
执行整数运算,因此永远不会得到浮点结果。至少需要将一个操作数强制转换为双精度:

 avgScore = totalGrades / (double) count;
4.仍然缺少的是SSN的处理


您需要将其与文件中的成绩一起读取,然后将其分配给
maxSSN
,该位置与分配
maxScore
值的位置相同。

1。您没有从
infle
读取任何内容。最有可能的情况是,您希望读取等级值:

 while (!inFile.eof())
 {
     inFile >> grade;
     ...
 grade += totalGrades;
根据@blastburne的反馈,使用
infle.eof()
也是错误的。考虑下面的输入文件:

3
5
9
17
每一行都以
lf
终止。然后,循环将读取5行,因为它在读取了
17
值后未检测到文件的结尾,但将尝试从文件中读取另一个值<循环终止时,code>count将变为
5
,这是错误的

请改用以下条件:

 while (inFile >> grade)
 {
   ...
要同时读取ssn,请使用以下命令:

while (inFile >> ssn >> grade)
{
   ...
这确保在执行循环体时,已从文件中读取
ssn
grade

2.
totalGrades
的计算操作数顺序错误:

 while (!inFile.eof())
 {
     inFile >> grade;
     ...
 grade += totalGrades;
需要

 totalGrades += grade;
3.您已将
avgScore
声明为double,但

 avgScore = totalGrades / count;
执行整数运算,因此永远不会得到浮点结果。至少需要将一个操作数强制转换为双精度:

 avgScore = totalGrades / (double) count;
4.仍然缺少的是SSN的处理


你需要把它和文件里的成绩一起读,然后在分配
maxScore
值的同一位置将其分配给
maxSSN

没有读取文件,因此没有将
grade
作为输入没有读取文件,因此没有将
grade
作为输入输入

totalGrades
在“文件读取”循环期间不会被修改。您从未读取过文件。这真的是你的代码吗,因为在我看来,它永远不会完成…?模糊的标题不太可能对网站的未来访问者有用。太本地化。
totalGrades
在“文件读取”循环期间从未被修改。您从未读取文件。这真的是你的代码吗,因为在我看来,它永远不会完成…?模糊的标题不太可能对网站的未来访问者有用。太本地化了。请不要告诉初学者循环使用
eof()
。我没有,这是问题本身;)告诉他改做
(infle>>grade){}
怎么样?肯定是很好的反馈,感谢链接-我将更新我的答案+1在
eof()上循环是人们学习如何使用iostreams时常见且令人困惑的错误源。请不要告诉初学者循环
eof()
。我没有,这是问题本身;)告诉他做
while(infle>>grade){}
怎么样?肯定是很好的反馈,感谢链接-我将更新我的答案+1循环
eof()
是人们在学习如何使用iostreams时常见且令人困惑的错误源。