2017-01-10 13 views
-4

マイタスクの質問:C++初心者は

を次のプログラムを書く:ユーザーは、(使用が2倍)2つの浮動小数点数を入力するよう求めています。次に、ユーザは、+,-,*、または/のいずれかの数字を入力するように求められます。プログラムは、ユーザーが入力した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); 
} 

シンボル(+-*/)にない場合、私はそれがメッセージ "無効な操作SIMBOL" を返すようにしたいです。ただし、シンボルが有効であってもそれを返します。どうすれば修正できますか?

+1

'else if'、またはそれより優れた' switch'ステートメントを参照してください。 – jaggedSpire

+7

今すぐあなたのデバッガの使い方を学ぶのはいい時間です。真剣に、それは長期的にあなたに大きな恩恵をもたらすでしょう。 – AndyG

+4

深刻なdownvoters;非常に基本的な質問かもしれませんが、問題を再現するための完全なコードと意図された動作の説明が含まれています。世界で最も大きな問題ではありませんが、私はそれが多くのdownvotesに値するとは思わない。 –

答えて

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

OTRAopciónESañadirreturnパラCADA if、デESTAフォーマTUfunciónoperarterminarácuando SE cumpla algunacondició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"; 
}