我的程序中的值计算不正确,即使支持数学是正确的

A value in my program is being calculated incorrectly, even though the supporting math is correct

本文关键字:支持数 程序 计算 不正确 我的      更新时间:2023-10-16

在我的课程模块中,我们正在编写一个程序,询问班级名称,成绩和学分。在一定数量的类结束时,它要求我们使用 setprecision(2( 将 GPA 计算到小数点后 2 位。我的所有程序功能,除了,它计算 GPA 为 3.00 而不是 3.14。我的总积分达到 22,总积分为 7,因此在设定精度下它理应为 3.14。关于为什么我得到 3.00 的任何见解?任何帮助都值得赞赏,因为我对此很陌生。

#include iostream
#include iomanip
#include string
//I took out the < and > because it made the words disappear
using namespace std;
int main(){
cout<< std::fixed << std::setprecision(2);
int totalCredits = 0;
int gradePoints = 0;
string courseName;
cout<<"Enter a course name: ";
getline (cin, courseName);
cout<<courseName <<endl;
int credits;
cout<<"Enter number of credits: ";
cin>>credits;
cout<<credits <<endl;
totalCredits = totalCredits + credits;
string grade;
cout<<"Enter your grade (A, B, C, D, F): ";
cin>>grade;
cout<<grade <<endl;
if (grade == "A"){
gradePoints = gradePoints + (4.00 * credits);
}
else if (grade == "B"){
gradePoints = gradePoints + (3.00 * credits);
}
else if (grade == "C"){
gradePoints = gradePoints + (2.00 * credits);
}
else if (grade == "D"){
gradePoints = gradePoints + (1.00 * credits);
}

string answer;
cout<<"Continue ('Yes' or 'No')? ";
cin>>answer;
cout<<answer <<endl;
while (answer == "Yes"){
cout<<"Enter a course name: ";
cin.ignore();
getline (cin, courseName);
cout<<courseName <<endl;
cout<<"Enter number of credits: ";
cin>>credits;
cout<<credits <<endl;
totalCredits = totalCredits + credits;
cout<<"Enter your grade (A, B, C, D, F): ";
cin>>grade;
cout<<grade <<endl;
if (grade == "A"){
gradePoints = gradePoints + (4.00 * credits);
}
else if (grade == "B"){
gradePoints = gradePoints + (3.00 * credits);
}
else if (grade == "C"){
gradePoints = gradePoints + (2.00 * credits);
}
else if (grade == "D"){
gradePoints = gradePoints + (1.00 * credits);
}

cout<<"Continue ('Yes' or 'No')? ";
cin>>answer;
cout<<answer <<endl;
}
cout<<"Total grade points: " <<gradePoints <<endl;
cout<<"Total credits attempted: " <<totalCredits <<endl;
float gpa = 0;
gpa = gradePoints/totalCredits;
cout<<"Your GPA is " <<gpa <<endl;

return 0;  
}

int 除以 int 得到一个 int。 通过在division 语句的变量名之前添加 (double( 来强制转换其中一个。


其他注意事项:

  • 你几乎重复整个程序,只是为了确保它执行一次。您只需将答案设置为"是",您就知道它会执行。
  • Cin <<变得非常挑剔。 通常最好使用getLine()并根据需要进行解析,更多信息。 (可能是家庭作业矫枉过正... 在这种情况下,快速修复使用ignore()清除流,并使用clear()重置流。 示例工作程序在这里。