2017-12-06 31 views
-2

C++でプログラミングするのは初めてのことですが、ちょっとしたことを学んだ後、このコンソール電卓アプリケーションを作ってみました。 yを計算し、3番目のz入力に応じて2つの数を加算、減算、乗算または除算します。私はIDEとしてコードブロックを使用していて、次のようにコードがある:それはエラーなしでコンパイルされていてもC++のコンソール電卓プログラムが正しく動作しない

#include <iostream> 

//First input value 
int x; 
//Second input value; 
int y; 
//Operator value; 
int z; 
int main() 
{ 
    //Asks user for first number 
    std::cout << "Input first number" << std::endl; 
    std::cin >> x; 
    std::cout << "" << std::endl; 

    //Asks user for second number 
    std::cout << "Input second number" << std::endl; 
    std::cin >> y; 
    std::cout << "" << std::endl; 

    //Asks user for operation 
    std::cout << "Input operation: 1 for add, 2 for sub, 3 for multiply, 4 for divide" << std::endl; 
    std::cin >> z; 

    //Displaying the desired output 
    if (z = 1) 
    { 
     std::cout << x + y << std::endl; 
    } 
    else if (z = 2) 
    { 
     std::cout << x - y << std::endl; 
    } 
    else if (z = 3) 
    { 
     std::cout << x * y << std::endl; 
    } 
    else (z = 4); 
    { 
     std::cout << x/y << std::endl; 
    } 

    //Just a stupid comment 
    std::cout << "Thank you for using this piece of shit xD. Press any key to end" << std::endl; 
    return 0; 
} 

を、すべての操作入力は、所望の動作ではなく、一緒に数字を追加しているようです。誰かが私がここで間違っていることを教えてもらえますか?

+1

'if(z = 1)' - その行とそれに類似したものは何か間違っていますか? C++での等価性の比較はどのように行われますか? – PaulMcKenzie

+1

'-Wall -pedantic -Werror'をコンパイルフラグに追加します。 –

+1

あなたのチェック条件が間違っています。これは代入演算になり、 'z'には値1が代入されます。変数値をチェックする正しい方法は、' == 'を使うことです。たとえば' if(z == 1) ' –

答えて

2

あなただけの場合」に(Z = 1、Z = 2 ...) 'Z' 変数に値を代入され、 else if "条件、それは値をチェックするために間違っています。ただし、この場合はスイッチケースを使用できます。以下のように。

switch(z){ 
    case 1: 
    std::cout << x + y << std::endl; 
    break; 
    case 2: 
    std::cout << x - y << std::endl; 
    break; 
    case 3: 
    std::cout << x * y << std::endl; 
    break; 
    case 4: 
    std::cout << x/y << std::endl; 
    break; 
    default: 
    std::cout << "select proper option" << std::endl; 


} 
0

この(z = 1)の値は常に1であり、実質的にはtrue(他のゼロ以外の値もそうです)です。
あなたは常に最初のオプションに終わるのです。

おそらく解決策は(z == 1)です。

1

あなたのif条件が間違っている場合、等価(==)比較演算子の代わりに代入演算子(=)を使用しています。

if(z = 1) - > if(z == 1)は、他の残りの条件と同じです。

除算では整数の丸め値が返されることに注意してください。除算の前に分子を二重にキャストすることをお勧めします。

ただのx/yを行う - >(X * 1.0)/ Yここで

+0

除算では整数の丸め値が返されるので、除算前に分子を二重にキャストする方が良いことに注意してください。 –

+0

回答を編集します。 – user4581301

関連する問題