【发布时间】:2017-11-16 23:11:21
【问题描述】:
我的程序有点困难,我非常感谢任何帮助。请原谅我的代码非常糟糕,我是新手。
#include <iostream>
#include <string.h>
using namespace std;
//functions
string getFirstName();
string getLastName();
int getScores();
double calculateSum(double sum, double score);
double calculateAvg(double avg, double sum);
char calculateGrade(double score, char grade);
void displayResults(string firstname, string lastname, double avg, char
grade);
int main(){
//variables
string firstname;
string lastname;
int score;
double sum;
double avg;
char grade;
//functions and parameters
firstname = getFirstName();
lastname = getLastName();
score = getScores();
sum = calculateSum(sum, score);
avg = calculateAvg(avg, sum);
grade = calculateGrade(score, grade);
displayResults(firstname,lastname,avg,grade);
while (true)
{
firstname = getFirstName();
cin >> firstname;
if (firstname == "done")break;
lastname = getLastName();
cin >> lastname;
sum=0.0;
for (int i = 0; i<10; i++)
{
double score;
cin >> score;
sum - calculateSum(sum, score);
sum+=score;
//sum = sum+score;
}
avg = calculateAvg(avg, sum);
avg = sum/10.0;
displayResults(firstname,lastname,avg,grade);
}
return 0;
}
string getFirstName()
{
string firstname;
cout<<"Enter first name: " << endl;
cin >>firstname;
return firstname;
}
string getLastName()
{
string lastname;
cout<<"Enter last name: ";
cin >>lastname;
return lastname;
}
int getScores()
{
int score;
cout <<"Input score: ";
cin >>score;
return score;
}
double calculateSum(double sum, double score)
{
sum+=score;
return sum;
}
double calculateAvg(double avg, double sum)
{
avg = sum/10.0;
return avg;
}
char calculateGrade(double score, char grade)
{
if (score >= 90)
grade = 'A';
else if (score >=80)
grade = 'B';
else if (score >=70)
grade = 'C';
else if (score >=60)
grade = 'D';
else
grade = 'F';
return grade;
}
void displayResults(string firstname, string lastname, double avg, char
grade)
{
cout<<firstname<< lastname<<": "<<avg << grade;
}
我不太了解循环,也不了解它们是如何工作的,所以我为循环所写的内容是我们的教授给我们的,所以如果有人能解释/剖析一下,我将不胜感激!我想知道如何做到这一点,而不仅仅是把答案交给我。
所以,我不确定为什么我的程序无法正确执行。我列出了调用函数,所有函数似乎都是正确的。我的循环也在主循环内,但我不知道为什么它们不起作用。另外,当我运行它时,我没有任何错误。
似乎卡在输入名字和输入姓氏部分,但我不知道为什么。再次感谢您的帮助,谢谢!
【问题讨论】:
-
名 = getFirstName(); cin >> 名字; getFirstName 确实已经捕获了名字的输入。您的代码中也有类似的情况。此外, sum - calculateSum(sum, score);什么都不做,它从 sum calculateSum(sum, score) 中减去。你的代码有很多错误。正如@GalloCedrone 建议的那样,您应该学习和使用调试工具。
-
如果您不希望将解决方案交给您并对其进行处理,您可以考虑尝试调试。有很多工具可用,但由于您是初学者,最简单的方法是在代码的不同部分打印 1、2、3、4、5、6,直到您真正了解哪个函数没有按预期运行。然后你处理那个函数。
-
除非您的格式不正确,否则在
main的开头,您会使用未初始化的变量调用许多函数(导致未定义的行为)。充其量这是不好的做法,最坏的情况是它可能会破坏您的整个程序。 -
如果您想学习循环,请在课程资料中查找它们,然后尝试编写您能想到的使用循环的最简单程序。不要编写依赖于你不理解的结构的这么大的程序。
-
如果您觉得我的解决方案有帮助,请将其标记为已接受的答案。谢谢。
标签: c++ loops average calculator