170 похожих чатов

Ребята, почему double calc() возвращает nan? class calculator{ public: calculator() {

cout << "Start programm " << endl; };

private:
int x;
int y;
char oper;

public:
char oper_;
int x_, y_;
char getOper() {
oper == oper_;
return oper_;
}
int getXY()
{
x = x_;
y = y_;
return x_;
return y_;
}

double calc(int x_, int y_, char oper_) {
switch (oper)
{
case '-':
return x - y;
break;
case '+':
return x + y;
break;
case '*':
return x * y;
break;
case '/':
return x / y;
break;
case '%':
return x % y;
break;
}
}
~calculator() { cout << "Stop programm " << endl; }
};

int main() {
int x, y;
char oper;
cin >> x >> y >> oper;

calculator calc;

cout << calc.calc(x, y, oper) << endl;;
return 0;

}

3 ответов

24 просмотра

в функции calc() ты указываешь параметры x_, y_, oper_, а в кейсах(case) используешь x, y, oper; поэтому свитч не отрабатывает. А так как нет возвращающего оператора у функции (not control paths return a value), то ты получаешь непонятное значение. Еще у тебя в getOper() сравнение oper == oper_, вместо = присваивания и в getXY два return-а - все, что ниже первого уже не отработает.

Kostiantyn- Автор вопроса
the Same⬇ Same
в функции calc() ты указываешь параметры x_, y_, o...

Подправил код вот так, а все равно не отрабатывает #include <iostream> using namespace std; class calculator{ public: calculator() { cout << "Start programm " << endl; }; private: double x; double y; char oper; public: char getOper() { this-> oper == oper; return oper; } double getX() { return x; } double getY() { return y; } double calc(double x, double y, char oper) { switch (oper) { case '-': return x - y; break; case '+': return x + y; break; case '*': return x * y; break; case '/': return x / y; break; } } ~calculator() { cout << "Stop programm " << endl; } }; int main() { double x, y; char oper; cin >> x >> y >> oper; calculator calc; cout << calc.calc(x, y, oper) << endl;; return 0; }

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Карта сайта