2017-09-22 6 views
-3

この値は0から始まり、数学の任意のオペランドを使用して計算できます。コードは正常にコンパイルされますが動作しません。ターミナルウィンドウには、「中止」、「再試行」、および「キャンセル」が表示されます。ルールは、2つのオペランドを使用することはできませんが、前のオペランドを前のオペランドに追加するだけです。Cath ++で2つのオペランドを除いた数学計算機

#include <iostream> 
#include <cmath> 

using namespace std; 

void Input(double input); 

int main() 
{ 
    double sign, input; 

    cout << "This program calculates any given number upto 1 decimal place using the following operators:" << endl; 
    cout << " '+' - Addition." << endl; 
    cout << " '-' - Subtraction" << endl; 
    cout << " '*' - Multiplication." << endl; 
    cout << " '^' - Root." << endl; 
    cout << " '/' - Division." << endl; 

    Input(input); 

    return 0; 
} 

void Input(double IN) 
{ 
    char q; 
    char sign; 
    int Val = 0.0; 

    cin >> sign >> IN; 

    while (IN != q) 
    { 

     if (sign = '-') 
      Val -= IN; 
     if (sign = '+') 
      Val += IN; 
     if (sign = '*') 
      Val *= IN; 
     if (sign = '/') 
      Val /= IN; 

     cout << endl << "Result so far is " << IN; 

     IN++; 
    } 
} 
+0

何が問題になっているのかを明確に指定することを強くお勧めします。私は問題になる可能性のあるコードで繰り返しエラーを見ることができますが、私はむしろゴールポストを固定しています。 – user4581301

+0

プログラムが動作しません、計算するために提供されている操作標識に従って番号を計算します。 – Snehil

+0

どこで動作しませんか?どの行/式ですか?あなたがしたいことではなく、何をするのですか? – user4581301

答えて

0

あなたの主な問題は、while(IN != q)は、任意のプリミティブデータ型=ため、C++に未定義の動作

  • となりますので

    1. qが定義されていないです代入演算子、およびないコンパレータ演算子を意味しています。比較するには、代わりに==を使用してください。
    2. Valは、intデータ型の変数ですが、floatまたはdoubleの値0.0が割り当てられています。 (例えば、このif声明)

      if (sign = '-')

      1. プログラムはへ45ある-の値を割り当てる:あなたのプログラムが文であるならばどのように

      sign変数

    3. if値が0その文がfalseとみなされ、値が0以外の場合ブロックは、その後の文はtrueとみなされ、ブロック
    4. を入力
    5. をスキップしている場合の文は、値0
      • ための変数signをチェック
      • プログラムはifブロック内のコードを実行

    プログラムは、あなたのコード内のすべてのif文のものを3事のすべてを行う、と私はめったにので、私は非常にわからないRun-Time Check Failure #3-Tエラー

    少しアドバイスを与えるプログラムは、switchを使用することができますなぜWindowsに自分のコードを実行しませんifステートメントを複数使用する必要があるときはいつでも、読むのが簡単です。

  • +0

    値 'Val'は整数であり、計算された分数を投げ捨てていて、 'IN'はパラメータとして何もしません。 – user4581301

    +0

    '' Runtime Check Failure#3-T 'は、 'input'が' main'で初期化されていないか、 'q'が' Input'で初期化されていない状態でVisual Studioがプログラムを停止することはほぼ確実です。 – user4581301

    +0

    @ user4581301思い出してくれてありがとう、どうすればこのようなシンプルなデータ型のエラーを見落とすことができますか?しかし、「Val」は整数で、 '/ = 'で代入されているのは私の大きな関心事ではありません。プログラムの本来の意図が完全に理解されていないので、間違いを簡単に指摘しました。真の引数なしで関数の引数として 'IN'を使用することも大したことではありません。なぜなら、"働くコードを書く方法 "の代わりに"適切なコードを書く方法 "ですからです(いつか使い捨て引数を使って関数のオーバーロードのための関数)。 – PaprikaAndPepper

    関連する問題