C++ 没有得到预期的输出
我正在写一份家庭作业,要求用户阅读包含未知数量的SSN和分数的文本文件。然后,程序需要计算最大、最小和平均分数,然后输出带有相关SSN的最大分数以及最小和平均分数 它似乎运行正常,但输出均为“0” 非常感谢您的帮助 代码: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
#包括
#包括
#包括
#包括
使用名称空间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时常见且令人困惑的错误源。