带参数的简易等级代码
Easy Grade Code with parameters
我正在尝试创建一个函数,该函数具有一个数字等级的int输入参数,并返回一个字母等级,要么为-,要么为+,要么两者都不为。我知道如何在不使用参考参数的情况下做到这一点,但我正在尝试使用参数,我在这样做时遇到了一些困难
一个输出参数是字母等级,第二个输出参数为+或-(如果错过下一个等级1或2分,则为+,如果刚刚达到等级,则为-
#include <iostream>
using namespace std;
void letterGrade (int, float&, float&);
int main(){
int score;
float letter;
float sign;
cout << "Please input your grade (0-100): ";
cin >> score;
cout << endl;
if (score >=90 && score <=100){
letter == "Letter grade: A";
if (score == 90 ||
score == 91) {
sign = "-";
}
else if (score == 99 ||
score == 98) {
sign == "+";
}
else {
sign == " ";
}
}
letterGrade(score, letter, sign);
return 0;
}
如果有人能为我指明正确的方向,仍然使用这些参数,那将非常有帮助。我想我的主要问题是我不知道如何在if语句中使某个=为浮点值。
感谢您的任何帮助或建议!
您需要传入存储结果的位置。
因此,对当前代码的最小更改是传递对存储结果的字符串的额外引用。
void letterGrade (int, float&, float&, std::string&);
然后当你调用函数时:
std::string results;//results are stored in here
letterGrade(score, letter, sign, results);//results are passed by reference here
然后在letterGrade函数中,你想更改你返回的内容,而不是写入你传递的结果参考。
此外,您还将浮动与相等进行比较。假设浮点值没有完全准确地存储在计算机中,这可能最终无法提供您想要的行为。如果您在编译代码时启用了所有警告,编译器会对此发出警告。在未来,编译所有警告是一个好主意,因为你会很快得到关于潜在问题的反馈。修复代码的一个快速方法是与小于和大于运算符进行比较。阅读本文了解有关浮动的更多信息:https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/02Numerics/Double/paper.pdf
相关文章:
- 如何使基类的运算符对基类的可变参数数可见(请参阅下面的代码)?
- 根据编译时参数在 C 中重复代码
- 扩展C++生成的代码的模板参数类型名称
- 将函数作为参数传递以避免重复代码
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++基于输入参数的动态代码生成
- 调用参数不是原子参数的函数是此代码引发异常的原因吗?
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- 在 Metal 着色器代码中,如何定义函数的 in/out 参数变量?
- C++17.处理使用 auto 相关的模板参数.代码排序困难
- 为什么EclipseCDT代码格式化程序有时会在模板参数中引入空格
- 我写了一个类,它总是将其函数参数委托给它的成员,我该如何改进代码
- 编译器是否C++具有相同模板参数集的每个模板类实例生成代码?
- 如何将char数组声明为函数参数?或告诉我此代码中还有其他问题?
- 我的代码在作为参数传入 .begin() 时不起作用,但在我将 .begin() 转换为迭代器后工作
- 如何基于构造函数参数模板化类成员函数的代码
- 在存在错误代码的情况下输出参数与 NRVO
- 在完美转发函数中公开参数类型,避免代码重复
- 中断长代码 snprintf 格式和参数
- 将代码移出类定义时未扩展参数包