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