0

追加のために文字「+」を+に変換するにはどうすればよいですか? 私は、ユーザーが演算子 +-*/ を入力してから、演算子を出力するようなことをしようとしています b.

一連の if ステートメントを実行することもできますが、これをより効率的に実行する方法があるかどうか疑問に思っていましたか?

if (operator == "+") {cout << a + b;}
else if (operator == "-") {cout << a - b;}

等..

4

4 に答える 4

3

tokenは、演算子を取得する char であると仮定してスイッチを使用し、 op1andop2は 2 つのオペランドです。

switch (token)
{
    case '/':
        val = op1 / op2;
        break;
    case '*':
        val = op1 * op2;
        break;
    case '+':
        val = op1 + op2;
        break;
    case '-':
        val = op1 - op2;
        break;
}
于 2013-10-08T08:09:36.023 に答える
1

関数ポインターでマップを使用できます。

int addition(int a, int b){
  return a + b;
}

std::map<char, int(*)(int, int)> operators;
operators.insert(make_pair('+', addition));

char c = getch();
int first_operand = 10;
int second_operand = 20;

int result = operators[c](first_operand, second_operand);
于 2013-10-08T08:08:06.873 に答える
0

このようなマップも使用できます。この場合、効率はあまり重要ではないと思います。

cout << operators[op](a, b);
于 2013-10-08T08:12:24.160 に答える
0

この場合、スイッチを使用する方が良いと思います。そうでなければ、解決策は私には問題ないようです。

于 2013-10-08T08:09:13.933 に答える