2013-10-15 50 views
0

好吧,所以最終我會做一個後置計算器與堆棧實現和獲得輸入,如45 20 +。我只是無法正確輸入輸入,我想忽略空格,如果用戶輸入一個數字,我想雙倍輸入,如果用戶輸入一個運算符,比如+,我想輸入一個字符。我至今如下:問題與cin.peek()和問題得到正確的輸入

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,按回車鍵,然後輸入+,然後輸入,它循環我的數字語句一百萬次。我的程序是否卡在每個if語句中?任何幫助將不勝感激,如果需要任何澄清或其他信息,請提問。數字之間需要有空格,白色空間需要被忽略,並且運營商之間不需要有空格。最終,應該發生的事情是用戶輸入諸如30 30 30 ++之類的東西,然後評估該公式。

回答

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

應該

else if (value == '+') 

使用==比較。

+0

謝謝,我確實看到了這個並相應地修復了它 – user1940516

0

我想通了,我搞亂了,設置char value = cin.peek(),並且應該在函數中使用cin.peek(),花費在簡單錯誤上的時間:D。