带参数的简易级代码

时间:2014-11-09 23:54:07

标签: c++ parameters

我正在尝试创建一个具有数字等级的int输入参数的函数,并返回带有 - ,a +或两者的字母等级。我知道如何在不使用引用参数的情况下执行此操作,但我正在尝试使用参数,但我遇到了一些困难。

一个输出参数是字母等级,第二个输出参数是+或 - (+如果错过了下一个等级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语句中创建一个浮点数。

感谢您的帮助或建议您的帮助!

1 个答案:

答案 0 :(得分:0)

您需要传入存储结果的位置。

因此,对当前代码的最小更改是传递对存储结果的字符串的附加引用。

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