2017-07-11 8 views
-2

私はC++を新しくしました。私は先週C++を教え始めました。今までは本当の問題はありませんでした。 Microsoft Visual Studio 2017を使用していますが、if文とelse文に問題があります。あなたは、私はこの非常に限られた電卓を作っています。基本的に、このプログラムは4つの基本的な算術演算を提供し、1、2、3、または4のいずれかを入力して計算に使用する演算を選択します。次に、別のプログラムを実行して計算します。 (例:2は減算のため、2を入力すると減算計算機が実行されます) これはプログラムのコードです。ifとelseステートメントを無視して、C++で書かれたプログラム

#include "stdafx.h" 
#include "iostream" 
using namespace std; 

int main(){ 
int add = 1; 
int sub = 2; 
int mul = 3; 
int div = 4; 
cout << "Extremely Limited C++ Calculator: Enter a number between one and 
four to start calculating and press enter." 
    << '\n' 
    << "LEGEND" 
    << '\n' << "1 = Addition" 
    << '\n' << "2 = Subtraction" 
    << "\n" << "3 = Multiplication" 
    << '\n' << "4 = Division" 
    << '\n' << "Operation: "; 
if (cin >> add) { 
system("start C:\\CalculatorApps\\addition.exe"); 
return 0; 
} 
if (cin >> sub) { 
system("start C:\\CalculatorApps\\subtraction.exe"); 
return 0; 
} 
if (cin >> mul) { 
system("start C:\\CalculatorApps\\multiplication.exe"); 
return 0; 
} 
if (cin >> div) { 
system("start C:\\CalculatorApps\\division.exe"); 
return 0; 
} 
} 

は、だから私はaddition.exeとsubtraction.exeが行っているが、問題は関係なく、私が入力した内容数、それは常にaddition.exeを実行していないということです。減算の計算機では、2つ以上の数値を減算するかどうかをユーザーに選択させることを試しましたが、if文を無視していたために機能しませんでした。私はまた、ある時点で、減算計算機とあなたが入力した数字が有効な選択肢ではなく、有効な選択肢を入力することを読んだテキストを表示する計算機に連れて来るメインプログラムの両方についてelse文を持っていましたが、プログラムによって。今、私はインターネットで十分に頑張っていないかもしれませんが、私を助けてくれたものは見つかりませんでした。あなたが答えを知っていれば私には理解できる言葉で教えてください。(私はです。)結局私の質問を解決する答えがある別の質問にリンクしてください。 ありがとうございました!

+1

あなたの問題はあなたのif/thenではなく、あなたの(間違った) 'cin 'の使用です。変数に入力を割り当てるには 'cin >> var'を使います。 'cin'自体は変数ではありません。ですから、抽出演算子で 'cin'を使ってvarに代入し、それをあなたが期待する入力と比較してください。 – Joe

+0

'if(cin >> div)'は入力が成功したかどうかを示します。何が入力されたのかは分かりません。 – Galik

+1

私は推薦された本の中から体系的に作業することを推奨します:https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list – Galik

答えて

0

cinは、標準入力ストリームを表すクラスistreamのオブジェクトです。これはストリームstdinに対応します。オペレータ>>ストリームのオーバーロードは、同じストリームへの参照を返します。ストリーム自体は、booleanの条件で変換演算子を使用してtrueまたはfalseに評価することができます。

cinは、フォーマットされたストリーム抽出を提供します。操作cin >> x;

ここで、 "x"は、数値ではない数値が入力された場合、int型になりません。したがって:

if(cin>>x) 

は、数字ではなく文字を入力するとfalseを返します。

常に数字を入力するので、最初の文if(cin>>sum)は常にtrueです。したがって、あなたの他のステートメントはスキップされます。

関連する問題