оператор if с несколькими условиями не работает с использованием || или $$

#visual-c

#visual-c

Вопрос:

Я пытаюсь создать калькулятор и хочу, чтобы он отображал сообщение об ошибке, если был отправлен математический знак, который не был включен в список.

Мне нужно if , чтобы в операторе было больше одного условия, и я перепробовал много способов, но ни один из них не сработал. проблема заключается в первом if утверждении

 #include <iostream>
using namespace std;
int main()
{

    string sign;
    double x;
    double y;
    string a;
    string b;
    string c;
    string d;
    string e;
    string f = "addition";
    string g = "subtraction";
    string h = "multiplication";
    string i = "division";
    a = "please enter the operation type:";
    b = "please enter the first number:";
    c = "please enter the second number:";
    d = "the answer is:";
    e = "thank you for using my calculator";

    
    cout << a << endl;
    cin >> sign;
    cout << b << endl;
    cin >> x;
    cout << c << endl;
    cin >> y;

 

Я пытаюсь отобразить сообщение об ошибке, если пользователь вводит другой оператор, но, похоже, ничего не работает

    if (sign == f || g || h || i) {

        if (sign == f) {
            cout << d << endl;
            cout << x   y << endl;

        }
        else {
            if (sign == g) {
                cout << d << endl;
                cout << x - y << endl;
            }
            else {
                if (sign == h) {
                    cout << d << endl;
                    cout << x * y << endl;
                }
                else {
                    if (sign == i) {
                        cout << d << endl;
                        cout << x / y << endl;
                    }
                }
            }
        }
    }
    else {
        cout << "error please enter a viable option:";
    }
    
    cout << e << endl;
    return 0;

}
 

Комментарии:

1. if (sign == f || g || h || i) не делает того, что вы думаете; Я ожидаю, что он вообще не компилируется. Я подозреваю, что вы имели в виду, будет написано if (sign == f || sign == g || sign == h || sign == i)

2. @IgorTandetnik switch() оператор был бы лучше, имо.

3. @Dai Попробуйте, посмотрите, сможете ли вы заставить его скомпилироваться.

4. @IgorTandetnik Сумасшедший, я на мгновение подумал, что это Java или C #. В этом случае an unordered_map подойдет 😉