C ++新手问题

时间:2017-01-10 15:34:49

标签: c++

我的任务:

  

编写以下程序:要求用户输入2个浮点数(使用双精度数)。然后要求用户输入以下数学符号之一:+-*/。程序计算用户输入的两个数字的答案并打印结果。如果用户输入无效符号,程序应该不打印任何内容。

我的代码:

#include <iostream>

using namespace std;

int introducir()
{
    int a;
    cin >> a;
    return a;
}

bool simbolo(char x)
{
    if (x == '+')
        return true;
    if  (x == '-')
        return true;
    if (x == '*')
        return true;
    if (x == '/')
        return true;
    return false;    
}

void operar(char x, int a, int b)
{
    if (x == '+')
        cout << a+b;
    if  (x == '-')
        cout << a-b;
    if (x == '*')
        cout << a*b;
    if (x == '/')
        cout << a/b;
    else cout << "INVALID OPERATION SIMBOL";

}

int main()
{
    cout << "insert 2 numbers"<< endl;
    int a =introducir();
    int b= introducir();
    cout << "introduce one of these simbols : +,-,* o /." << endl;
    char x;
    cin >> x;
    bool primo= simbolo(x);
    {
        if (primo) {
            cout << "simbol is valid" << endl;
        } else {
            cout << "invalid simbol" << endl;
        }
        cout << "operation result is:";
   }
   operar(x,a,b);
}

如果符号不在(+-*/)中,我希望它返回一条消息&#34;无效操作SIMBOL&# 34 ;;但即使符号有效,它也会返回它。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您编写的方式,else仅适用于最终if

更改为

if (x == '+'){
    cout << a+b;
} else if  (x == '-'){
    cout << a-b;
} else if (x == '*'){
    cout << a*b;
} else if (x == '/'){
    cout << a/b;
} else { 
    cout << "INVALID OPERATION SIMBOL";
}

和其他if语句类似。 (你甚至可以考虑重构switch块。)括号并不是完全必要的,但为了清楚起见,我已将它们放入。

答案 1 :(得分:-1)

Otraopciónesñadirreturn para cada if,de esta formatufunciónoperarterminarácuandose cumplaalguncudición。

if (x == '+'){
    cout << a+b;
    return;
} else if  (x == '-'){
    cout << a-b;
    return;
} else if (x == '*'){
    cout << a*b;
    return;
} else if (x == '/'){
    cout << a/b;
    return;
} else { 
    cout << "INVALID OPERATION SIMBOL";
}