首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的程序中的一个值被错误地计算,即使支持的数学是正确的

我的程序中的一个值被错误地计算,即使支持的数学是正确的
EN

Stack Overflow用户
提问于 2019-11-25 12:22:54
回答 1查看 64关注 0票数 0

在我的课程的一个模块中,我们正在编写一个程序,要求输入班名、成绩和学分数量。在一定数量的类的末尾,它要求我们使用setprecision(2)计算GPA到2个小数点。我所有的程序函数,除了它计算的GPA是3.00而不是3.14。我的totalPoints是22,而totalCredits是7,所以它理所当然地应该是3.14。你能理解为什么我会得到3.00吗?任何帮助都是非常感谢的,因为我对此非常陌生。

代码语言:javascript
复制
#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;  
}
EN

回答 1

Stack Overflow用户

发布于 2019-11-25 12:24:27

整型除以整型得到整型。通过在除法语句的变量名前添加(double)来转换其中之一。

其他注意事项:

  • ,你几乎重复了整个程序,只是为了确保它能执行一次。你可以简单地将答案设置为“是”,你就知道它会执行。
  • cin <<变得非常挑剔。more info,通常你最好使用getLine()并根据需要进行解析。(可能是家庭作业的过度杀伤力...)本例中的quickfix使用ignore()清除流,并使用clear()重置流。示例工作程序here.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59025212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档