我的GPA计算不正确,即使支持的数学方法正确[重复]

问题描述 投票:1回答:1
在我班级的模块中,我们正在编写一个程序,要求输入班级名称,等级和学分。在某些类的末尾,要求我们使用setprecision(2)将GPA计算为2个小数点。我所有的程序功能都除外,它计算出的GPA为3.00,而不是3.14。我的totalPoints达到22,totalCredits为7,因此应该以setprecision为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; }

c++ gpa
1个回答
2
投票
int除以int会得到一个int。通过除法语句在变量名称之前添加(双精度)来强制转换其中之一。


其他注意事项:

    您正在重复几乎整个程序,只是要确保它执行一次。您只需将答案设置为“是”,就知道它将执行。
  • cin <getLine()并根据需要进行解析more info。 (可能是功课的过度杀伤...)这种情况下的快速修复程序是使用ignore()清除流,并使用clear()重置流。示例工作程序here
© www.soinside.com 2019 - 2024. All rights reserved.