#include
using namespace std;
int main() {
char choice;
int solution, num1, num2;
cout << \"Menu\";
cout << \"\\n========\";
cou
cin >> num1, num2;
This syntax is not correct for what you want. To chain, use
cin >> num1 >> num2;
If you compile with warnings you'll get notified about this by the compiler
int a{}, b{};
std::cin >> a, b;
gives the error:
warning: right operand of comma operator has no effect [-Wunused-value]
std::cin >> a, b;
The whole statement is parsed as
((std::cin >> a), b);
Which consists of two comma-separated expressions. The b in that case doesn't have any effect. If you print the variables after the std::cin line above, you will always get 0 for b
int solution, num1, num2;
This leaves all variables uninitialised. Trying to read from them without a previous assignment is undefined behaviour.
cin >> num1, num2;
The supposed intention of this line is to read into both variables. What happens really is an application of the comma operator, with operands cin >> num1 on the left side and num2 on the right side.
The left side is evaluated and a value is written to num1; the second operand has no effect and leaves num2 in its uninitialised status.
It's as if you had written cin >> num1;.
solution = num1 + num2;
The aforementioned undefined behaviour happens, rendering your entire program invalid.
You can fix the problem as follows:
cin >> num1;
cin >> num2;
You are using cin wrong. Do this instead :
cin >> num1 >> num2;
(And it is always nice to let the user know what to type with one cout or two :)).
You could do cin only once just after cin >> choice, and before the switch. It will save you some lines and will respect the credo :
Do not repeat yourself.
You don't check for divide by zero. If the user try to do num1 / 0, your program will crash.
The return 0 in case 'X' is not necessary and your break won't be reached, so you could remove the return and you will meet the main's return 0 instead, keeping the switch nice and clean.
In case '/' you cast num2 to double. I don't see why you print the result of a int casted to a double. My guess is you wanted the result to be a double. In that case, you would do :
solution = num1 / (double)num2;
and change solution to be a double.
Lastly, I advise you always initialize your variables since you could face the case where you use unitialized variables and get undefined behavior.