Я пытаюсь сделать функцию, которая имеет входной параметр 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.
Спасибо за любую помощь или посоветуйте, что у вас есть!
Вам необходимо пройти в том месте, где будут сохранены результаты.
Таким образом, минимальное изменение текущего кода будет состоять в дополнительной ссылке на строку, в которой хранятся результаты.
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