0

わかりましたので、最終的には、スタック実装を使用して後置計算機を作成し、45 20+ などの入力を取得する予定です。入力を正しくするのに問題があります。空白を無視したい、ユーザーが数字を入力した場合、double を入力したい、ユーザーが + などの演算子を入力した場合、char を入力したい。私がこれまでに持っているものは次のとおりです。

  1 #include"dstack.h"
  2
  3 #include<iostream>
  4 #include<stdlib.h>
  5 using namespace std;
  6
  7 void error();
  8
  9 int main()
 10 {
 11  char value = cin.peek();
 12  char op;
 13  double num;
 14
 15  while(!cin.eof())
 16  {
 17   if( (isdigit(value)) ) //|| value == '.') )
 18   {
 19    cin >> num;
 20    cout << "Your number is: " << num << endl;
 21   }
 22
 23   else if( (isspace(value)) )
 24   {
 25    cin.ignore();
 26   }
 27
 28   else if ( (value = '+') )
 29   {
 30    cin >> op;
 31    cout << "You entered a char: " << op << endl;
 32   }
 33
 34   else if ( (isalpha(value)) )
 35   {
 36    error();
 37   }
 38  }
 39  cout << "No more input" << endl;
 40 }
 41
 42 void error()
 43 {
 44  cerr << "error" << endl;
 45  exit(1);
 46 }

私はテストしているだけなので、スタックやそのようなものにはまだ何も入れていません。さらに演算子があるので、「+」をテストして機能させるだけです。何が起こっているのかというと、数字を入力すると問題なく動作しますが、30 と入力して Enter キーを押し、+ を入力してから Enter すると、数値ステートメントのカウントが 100 万回ループします。プログラムがそれぞれの if ステートメントで動かなくなっていますか? ご不明な点がございましたら、お気軽にお問い合わせください。数字の間にはスペースが必要で、空白は無視する必要があり、演算子の間にはスペースを入れる必要はありません。最終的に、ユーザーが 30 30 30++ などを入力すると、その方程式が評価されるはずです。

4

2 に答える 2

0
else if ( (value = '+') )

する必要があります

 else if (value == '+')

==比較するために使用します。

于 2013-10-15T18:28:28.987 に答える
0

私はそれを理解しました、私はめちゃくちゃにしてchar値= cin.peek()を設定していました、そして関数で単にcin.peek()を使用することになっていた、単純な間違いに費やされた時間:D.

于 2013-10-16T04:15:01.170 に答える