Простой Grade Code с параметрами

0

Я пытаюсь сделать функцию, которая имеет входной параметр int для числового класса и возвращает класс письма с помощью a -, 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;
}

Если кто-то может указать мне в правильном направлении, который все еще использует параметры, которые были бы очень полезными. Я думаю, что моя основная проблема заключается в том, что я не могу понять, как вы делаете что-то = в float внутри оператора if.

Спасибо за любую помощь или посоветуйте, что у вас есть!

Теги:
parameters

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню