[問題] 有關postfix的運算...

看板C_and_CPP作者 (白濫)時間16年前 (2009/11/23 02:33), 編輯推噓5(5011)
留言16則, 4人參與, 最新討論串1/1
遇到的問題: 是寫將一個輸入的算式 每一個輸入的 都當成是字串 然後轉換成postfix 最後印出轉換後的答案~並計算出答案(數字) 這是我的部分程式碼 不過下面紅色那一段 不知道要怎麼寫 才能寫出會去計算原本讀入的算式 並印出來 我的想法是把輸入的那些算式(字串) 先存到陣列a中 然後再讓b=a這個陣列 因為b是設定為一個整數 所以我認為應該是會計算a這個算式 然後最後印出答案b 可是好像跑出來的東西怪怪的 所以應該是我的想法有問題 但我又不知道要如何在去改了 可以請高手幫忙解答一下嘛?? 例如輸入了:2*3^2+8/4 希望得到的正確結果: 20 <<<(答案) 232^*84/+ <<<(轉換後) 程式跑出來的錯誤結果: 1580411442 <<<這個有問題而已 232^*84/+ 開發平台: Dev-C++ 有問題的code: (請善用置底文標色功能) 以下是部分CODE(有問題為紅色的) int postfix(char*); //轉成postfix int priority(char); //決定符號優先順序 int main(int argc, char *argv[]) { char input[80]; int a[80],b; printf("輸入運算式:"); scanf("%s", input); scanf(input,"%100s",&a[80]); //先把原本輸入的丟到a這個陣列中 b = a[80] ; //然後設定b去計算a printf("%d\n",b); //把答案印出來 postfix(input); system("PAUSE"); return 0; } 補充說明: 因為最後出來的答案 很顯然不是我所想要的 請問需要怎麼修改?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.104.197

11/23 04:00, , 1F
你的b並不會幫你計算,他只是印出你a[80]的位址
11/23 04:00, 1F

11/23 04:06, , 2F
說錯,因該是印到a[80]的值...而溢位
11/23 04:06, 2F

11/23 05:42, , 3F
那..請問要如何去計算那些字串的答案??
11/23 05:42, 3F

11/23 05:49, , 4F
你先不要在postfix裡印出答案 先存進陣列裡
11/23 05:49, 4F

11/23 05:49, , 5F
再寫另一個函式計算postfix的值 (這個你應該會)
11/23 05:49, 5F

11/23 05:49, , 6F
最後把這兩者輸出即可
11/23 05:49, 6F

11/23 05:52, , 7F
那原先存進陣列裡的東西呢...?
11/23 05:52, 7F

11/23 05:52, , 8F
意思是先存進陣列裡~然後寫一個函式算答案
11/23 05:52, 8F

11/23 05:53, , 9F
然後再加上postfix的函式 是這個意思嘛?
11/23 05:53, 9F

11/23 10:50, , 10F
唔 既然原來的你想留就開一個新的嘛
11/23 10:50, 10F

11/23 12:36, , 11F
我不太會存到陣列之後再抓出來計算耶..XD
11/23 12:36, 11F

11/23 12:45, , 12F
可以參閱stack相關;另char,int,運算子不能夠隨意轉換
11/23 12:45, 12F

11/23 13:55, , 13F
postfix的計算函式我寫好了~但還有一個問題
11/23 13:55, 13F

11/23 13:56, , 14F
請問一下.如何讓計算的函式去讀剛剛寫成postfix的字串?
11/23 13:56, 14F

11/23 13:57, , 15F
我是使用先把剛剛的存在一個名為output2.txt的檔案
11/23 13:57, 15F

11/23 13:57, , 16F
然後再讓計算的去讀他~可是好像讀不到的樣子...答案都0
11/23 13:57, 16F
文章代碼(AID): #1B2OFjfY (C_and_CPP)