协助使用基于C++的基础GPA计算器和cin使用
Assistance with Basic C++ Based GPA calculator and cin usage
我正在尝试创建一个简单的GPA计算器,它会提示用户输入课程数量(使用new)。接下来是一个取决于课程数量的for循环,要求用户输入该课程的年级和学分数量。程序完成循环并出错。请帮忙。这是代码(我第一次使用这个论坛网站btw):
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
cout<<"Welcome to the GPA calculator";
cout <<endl;
cout<<"Please enter the number of courses you wish to calculate : ";
int*numberOfCourses = new int;
cin>>*numberOfCourses; //must dereference as it is a pointer and I AM SETTING variable.
char grade, *credits= new char;
int gradesOfPerson = 0;
int*score = new int;
int j = 0;
int i = 0;
int*cumulativeScore= new int;
while( i< *numberOfCourses){
cout <<"Please enter the credits of your " <<(i+1) <<" course. " ;
cin >>*credits;
cin.get();
cout << "Please enter your grade :";
cin>>(grade);
cout <<endl;
switch (grade){
case 1: if (grade=='A'){
*score = 4;
break; }
case 2: if (grade=='B'){
*score = 3;
break; }
case 3: if (grade=='C'){
*score = 2;
break; }
case 4: if (grade=='D'){
*score = 1;
break; }
case 5: if (grade=='D'){
*score = 1;
break; }
case 6: if (grade =='E'){
*score = 0;
break;
}
}
gradesOfPerson = ((*score)*(*credits));
cumulativeScore += gradesOfPerson;
i++;
}
int gpa = (*cumulativeScore)/(*numberOfCourses);
cout <<"Your GPA is : " <<gpa;
delete numberOfCourses, credits, score, cumulativeScore;
}
很抱歉缩进不好(使用Dev C++)
您的代码有很多问题,但不要认为我指出这些问题会让人沮丧。假设你是一个相对初学者,这是相当不错的。
主要问题在于以下线路:
cumulativeScore += gradesOfPerson;
您已将accumulateScore声明为指针;它保存您感兴趣的数据的地址,而不是数据本身。您应该将其更改为
*cumulativeScore += gradeOfPerson
或者将accumulateScore设为整数变量(并更改将其用作指针的所有位置)。
另一个关键错误是您的开关语句。而不是类似的东西:
case 4: if (grade == 'D') {
// logic to execute if grade is 'D'
}
break;
这样做:
case 'D':
// logic to execute if grade is 'D'
break;
接下来,您需要将*cumulativeScore
初始化为0,因为在执行开始时,它可以包含任何内容。
最后,*score
应该是数字类型,而不是字符。字符'4'
的值(被解释为数字)实际上不是4
,这会导致错误,因为您将其视为数字。如需参考,请参阅此处的ASCII字符代码列表:http://www.asciitable.com/
至于其他问题(实际上不会导致程序失败,但不是最佳实践):
- 你对指针的使用很奇怪——为什么不简单地分配普通变量呢?您对
grade
、gradesOfPerson
、i
和j
执行了此操作,因此您清楚地知道如何操作。为什么您选择将其余变量设为指针 - 不包括
conio.h
。首先,您没有使用其中声明的任何函数。其次,它是非标准的,在大多数平台上都不可用 - 你应该做更多的错误处理:用户是否输入了合理的分数字母?你确定他们参加的课程数量是正数吗?等等
最后,请注意,您可以免费获得Microsoft Visual C++的速成版。它得到了积极维护,比Dev-C++领先几光年(例如,它可以帮助您正确缩进代码!:D)
祝你好运!
在这一行:
cumulativeScore += gradesOfPerson;
accumulateScore是一个指针,所以这条线会移动到它所指向的位置。你可能想写:
*cumulativeScore += gradesOfPerson;
它崩溃的原因是,你正在移动accumulateScore所指向的位置,后来当你试图取消引用它时,它指向的是无效内存。
如果没有看到错误,很难说出了什么问题,但乍一看,如果gpa
行(int gpa = (*cumulativeScore)/(*numberOfCourses);
)现在没有抛出错误,那么将来可能会出现错误。gpa
应该是double
。
顺便说一句,您的delete
语句严重损坏。你不能一次删除多个变量,这个
delete numberOfCourses, credits, score, cumulativeScore;
实际上使用的是C++逗号运算符,该运算符会丢弃其左侧,因此只有cumulativeScore
会被释放。
- 使用 BMI 计算器对C++中的数字进行四舍五入的问题
- 我在c ++矩阵计算器程序中找不到错误
- C++计算器,不能单独除以 0
- 如何正确解析子字符串,以便它们对我的新手计算器有效?
- Arduino 基础 2 计算器无法C++工作
- 需要有关我的平均计算器代码的建议
- C++ - 在我尝试制作一个简单的计算器时有一个"uninitialized local variable y used"警告
- 野牛/flex:计算器将双精度值解释为整数,所以我添加了 YYSTYPE 双精度 #define 但我有多个编译错误
- C++计算器运算符
- 使用WIN32 API的击球平均计算器
- RPN计算器c++错误处理和多个运算符
- C++查找用于构建单行计算器
- 如何修复这个基本计算器
- 用于加法和减法的十六进制计算器
- 桌面计算器出现问题.C++程序设计语言
- 如果 GPA 计算器的语句问题
- DEV简单的C GPA计算器问题
- c++ gpa计算器不接受成绩输入
- 协助使用基于C++的基础GPA计算器和cin使用
- 需要帮助:GPA计算器c++