Я новичок, и у меня возникли проблемы с моим цепным оператором if-else. Когда я запускаю программу и ввожу, какой элемент я выбрал, он всегда выводит «Неверный ввод». Почему он не выполняет правильную функцию, если он равен ей в операторе if?
Спасибо,
дон
#include <iostream>
using namespace std;
int sum(int int1, int int2 ){
return int1 + int2;
}
int difference( int int1, int int2 ){
return int1 - int2;
}
int product( int int1, int int2 ){
return int1 * int2;
}
int quotient( int int1, int int2 ){
return int1 / int2;
}
int main(){
cout << "\nWelcome to the calculator.\n\n";
cout << "Please enter two numbers.\n\n";
int a;
int b;
cin >> a >> b;
cout << "What would you like to do with these numbers?\nHere are your options: add, subtract, multiply, or divide.\n\n";
string add;
string subtract;
string multiply;
string divide;
string choice;
cin >> choice;if( choice == add )
cout << sum( a, b );
else if ( choice == subtract )
cout << difference( a, b );
else if ( choice == multiply )
cout << product( a, b );
else if ( choice == divide )
cout << quotient( a, b );
else
cout << "Invalid entry.\n";
return 0;
}
С этим утверждением:
string add;
Вы создаете строковую переменную с именем add
, но ему еще не присвоено значение. Поэтому, когда вы сравниваете переменную с пользовательским вводом, программа увидит add
как значение null
и это не равно тому, что вводит пользователь.
Вы хотите присвоить ему значение:
string add = "add";
И все остальные строки одинаковы.
И сравнить std :: string:
if(choice == add)
Другой способ сделать это — просто проверить это с помощью постоянной строки:
if(choice == "add"){
//do something
}else if(choice == "subtract")
//do something else