2016-11-26 19 views
-5

Noob here :)こんにちは。自己学習しようとC + +!私の基本的な電卓には何が間違っていますか?

以下のコードは、私が実行したい操作の種類を変数で示しています: `int f; '

私はこの問題がres = a f b;であることを知っています。私は非常に悪い悪いコードであると確信しています。それ以外はどうすればいいのでしょうか?

#include <iostream> 

using namespace std; 

int main() 
{ 
int a; 
int b; 
int sum; 
int f; 

cout << "wahts the first number" << endl; 
cin >> a; 
cout << " '+'? '-'? '*'? or '/'? " << endl; 
cin >> f; 
cout << "whats the second number" << endl; 
cin >> b; 
res = a f b; 
cout << "answer is: " << res << endl; 
return 0; 
} 
+3

セルフラーニングは素晴らしいですが、それは[いくつかの良い本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)でもっと楽になるでしょう。 – user4581301

+0

私はそれがいくつかの良い本ではるかに簡単になることに同意します。オンラインリソースもうまくいくはずですが、C++には多くのリソースがないようです。プログラミングを始めて他のオプションを開くのであれば、[python](https://python.org)を見てみてください。私はC++を愛していますが、コンパイルやリンクの理解を混乱させ、同時に理解することは、同時にプログラミングの基礎を習得しなくても大きな仕事です。 Pythonは初心者には非常に親切で、たくさんの無料リソースがあります。 – danielunderwood

+1

'+'、 '-'、' * '、'/'は整数ではなく、' f'は演算子ではありません –

答えて

0

考慮すべき点がいくつかあります。あなたのf

  1. あなたは、一般的な操作をしたい場合std::functionではなく、intのようなものでなければなりません操作です。 intには番号の種類があります。
  2. この場合、実際にはstd::functionを使用する必要はありません。操作(除算、乗算、加算、減算)の操作が異なるからです。あなたはそれをfに割り当てるだけで、それが機能することを望むことはできません。入力から行う操作を決定するには、conditional statementsが必要です。これらのオプションの1つではない入力も処理する必要があります。あなたは、このロジックの一部を別の関数に引き出して、素敵で組織的なものをすべて得たいと思うでしょう。
  3. res = a f bは、resを定義していないため、a f bが有効なコードではないため、動作しません。あなたはそれを使わずにsumを定義していますので、それはresであるかもしれません。 a f bのような式は、中間が特別なものでなければ機能しません(operator、実際には、特定のサブセットの演算子だけがこのような式を形成します)。
  4. エラーには関係ありませんが、メインブロック内のコードは読みやすくするために少しインデントしてください。
  5. また、エラーには関係しませんが、特にコードを更新するときにローカルネームスペースを汚染し、エラーにつながる可能性があるので、using namespace stdに対して助言したいと思います。

このような問題に遭遇したときは、いくつかの重要な用語についてグーグルで取り組んでください。これは、あなたが常にGoogleの用語を知っているわけではないので、最初は少し難しいですが、長期的にあなたを助けるでしょう。まず、プログラムをコンパイルして、それらのエラーを1つずつ順番に処理してコンパイルし、プログラムの各ステップで期待されているものと比較してどの出力をソートするかを試みます。

0

あなたfはタイプintであり、+または任意のオペレータが入力されたときに、コマンドを無視し続けると、システムをクラッシュすることchar変数intにしてcin保存しようとしているためcinは、エラーフラグを設定する変数。 '+'またはその他の演算子を保持しているため、演算子の代わりに変数を使用することはできません。変数を宣言していませんressumを意味すると思いますが、より意味のある変数を使用する方が良いです コードsum = a * b !!をresult = a * bとしてお勧めします。if elseまたはswitchまたは?:オペレータのような構造を作る

あなたべき

  1. 使用の決定。 チェックこのアウトCPP Tutorials decision making
  2. 私はuがhere

    から右に開始すべきだと思うけど、私はあなたのコードは

    int main() 
    { 
        int result, a, b; 
        char f; 
        std::cout << "what is the first number \n "; 
        std::cin >> a; 
        std::cout << " '+' '-' '*' or '/'? \n"; 
        std::cin >> f; 
        std::cout << "whats the second number \n"; 
        std::cin >> b; 
        if (f == '+') 
         result = a + b; 
        else if (f == '-') 
         result = a - b; 
        else if (f == '*') 
         result = a * b; 
        else if (f == '/') 
        { 
         if(b == 0) 
         { 
          std::cout<<"Division by zero!!\n"; 
          system("pause"); 
          return 0; 
         } 
         result = a/b; 
        } 
        else 
        { 
         std::cout<<"Sorry wrong operator \n"; 
         system("pause"); 
         return 0; 
        } 
        std::cout << "answer is: " << result << '\n'; 
        return 0; 
    } 
    

されるべきだと思うPSは、その上に示したように、適切予定の方法を学習します大きなコードでエラーを見つけて理解しやすくするのに役立ちます。 using namespaceディレクティブは、stdのローカル関数または同じ名前のローカル関数または変数を使用すると、ローカルスコープを汚染し、問題を引き起こす可能性があります。まず始めに良い本を手に入れてみてください。私も自分自身を勉強し始めました。