C++成绩计算器问题
C++ Grade Calculator Issue
我需要帮助找出我的成绩计算器的问题。该程序在用户插入字母等级时工作,例如"A或A",输出为4.0。但我遇到的问题是,当用户插入一个"a+或a-"时,"+或-在字母等级上加0.3或-0.3"不会增加PLus或减号的值。
这是我所拥有的:
const double Plus = 0.3;
const double Minus = 0.3;
/**
* Letter grades are A, B, C, D, and F, possibly followed by + or –.
* Their numeric values are 4, 3, 2, 1, and 0. In our scheme, there is no F+ or F–,
* or A+. Adding a + to the grade increases the numeric value by 0.3, a – decreases it
* by 0.3.
*
* Input: The letter of Grade with + or -.
* Output: The value of inserted grade.
*
* @param cin the standard input stream.
* @param cout the standard output stream.
* @return 0 for success.
*/
int run(istream& cin, ostream& cout)
{
// Enter your letter grade: C+
//Grade value is[2.3]
char list [26] = { "A, B, C, D, F, a, b, c, f" };
char grade;
double value;
cout << "Enter your letter grade: ";
cin >> grade;
cout << fixed << setprecision(1);
if ((grade == 'A' || grade == 'a')){
value = 4.0;
}
else if ((grade == 'A+') || (grade == 'a+')){
value = 4.0 + 0.3;
}
else if (grade == 'A-' || grade == 'a-'){
value = (4.0 - Minus);
}
else if (grade == 'B' || grade == 'b'){
value = 3.0;
if (grade == 'B+' || grade == 'b+'){
value = (3.0 + Plus);
}
else if (grade == 'B-' || grade == 'b-'){
value = (3.0 - Minus);
}
}
else if (grade == 'C' || grade == 'c'){
value = 2.0;
if (grade == 'C+' || grade == 'c+'){
value = (2.0 + Plus);
}
else if (grade == 'C-' || grade == 'c-'){
value = (2.0 - Minus);
}
}
else if (grade == 'D' || grade == 'd'){
value = 1.0;
if (grade == 'D+' || grade == 'd+'){
value = (1.0 + Plus);
}
else if (grade == 'D-' || grade == 'd-'){
value = (1.0 - Minus);
}
}
else if (grade == 'F' || grade == 'f'){
value = 0.0;
if (grade == 'F+' || grade == 'f+'){
value = (0.0 + Plus);
}
else if (grade == 'F-' || grade == 'f-'){
value = (0.0 - Minus);
}
}
else if (!(grade == list[26])){
cout << "INVALID LETTER GRADE" << endl;
value = 0;
}
cout << "Grade value is [" << value << "]" << endl;
return 0;
}
简单来说:
您的问题是等级是char
,无法存储'A+'
(2个字符:"a"、"+")。将char grade
更改为std::string grade
(记住要包括<string>
),它应该可以正常工作。
问题是A+
或A-
是两个字符,因此不能存储在单个char
变量中。您可以使用两个变量(尽管如果您没有输入+
或-
,这可能会有问题,因为第二个变量中没有可存储的内容),也可以使用std::string
来存储输入的内容,然后检查其中是否有+
或-
。
此外,作为对所有if
语句的简化,您可以使用切换大小写块,或者使用此技巧直接从字母grade中获得绩点。
大写字母:gradePoint = 4.0 - (letter - 'A')
对于小写字母:gradePoint = 4.0 - (letter - 'a')
只需注意,由于E
与成绩一起被跳过,您必须单独检查和F
。
相关文章:
- 使用 BMI 计算器对C++中的数字进行四舍五入的问题
- 桌面计算器出现问题.C++程序设计语言
- 如果 GPA 计算器的语句问题
- 我的C++计算器似乎出了什么问题?
- 创建一个简单的计算器,添加时遇到问题
- 六计算器问题.有人可以再次检查我的代码吗?
- DEV简单的C GPA计算器问题
- C++序列计算器x_{n+1} = f(x_n),数学函数有问题
- 具有"else if"方法问题 C++ 的基本计算器
- 简单平均计算器的问题
- 计算贷款计算器程序的总利息的问题(C++)
- RPN计算器(将操作数应用到堆栈时出现问题)
- 简单的计算器程序出了什么问题
- C++新手 - 基本计算器问题
- 后缀表示法计算器 (RPN) 问题C++
- 我的计算器有问题
- C++BMI计算器问题
- C++计算器程序.问题
- C++成绩计算器问题
- Qt计算器的问题- c++