带参数的简易等级代码

Easy Grade Code with parameters

本文关键字:代码 参数      更新时间:2023-10-16

我正在尝试创建一个函数,该函数具有一个数字等级的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