わかりましたので、最終的には、スタック実装を使用して後置計算機を作成し、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++ などを入力すると、その方程式が評価されるはずです。