Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

請問有誰能幫我解這一題:

0 views
Skip to first unread message

God

unread,
Nov 24, 1999, 3:00:00 AM11/24/99
to
你好!我初學C++,不知這題能否用較淺顯易懂的語法寫出來?
我實在想不出方法來解,拜託前輩幫忙一下...
謝謝啦...


設計一個符合下列四個條件的簡單計算機:
(1) 該計算機要可處理基本的四則運算(先乘除後加減)
(2) 讓使用者輸入一字串,該字串的內容即為四則運算式
(3) 不必處理括號運算元
(4) 所有輸入的數字,僅需介於 1 至 9

E-mail:c...@tomail.com.tw

--
[0;31m ╭╮
[1;31m╭═╮ │ ╭═╮ [34m ◆星際個體: [1;33;41m未來 [32;44m最舊 [33;40m小棧 [0m
[0;32m│ │ ┼ │ │ [1;34m ◆通訊頻率: [32m << [36mBirding [33m.twbbs.org [32m>> < [31m140.112.251.84 [32m>
[1;32m╰═╯ │ ╰═╯ [34m ◆來源座標: [1;33m pcj-a20.pcroom.fcu.edu.tw [0m
[0;36m│ [0m
[1;34m╯ [0m


愛情的模樣

unread,
Nov 24, 1999, 3:00:00 AM11/24/99
to
※ 引述《cvj...@Birding.m8.ntu.edu.tw (God)》之銘言:
: 你好!我初學C++,不知這題能否用較淺顯易懂的語法寫出來?

: 我實在想不出方法來解,拜託前輩幫忙一下...
: 謝謝啦...
: 設計一個符合下列四個條件的簡單計算機:
: (1) 該計算機要可處理基本的四則運算(先乘除後加減)
: (2) 讓使用者輸入一字串,該字串的內容即為四則運算式
: (3) 不必處理括號運算元
: (4) 所有輸入的數字,僅需介於 1 至 9
: E-mail:c...@tomail.com.tw

好久以前做過了
簡單解決你的問題是 "後序式"postfix

並用 stack 去處理這個
這樣簡單講
不知你懂不懂ㄟ

不懂再問 不要人寫給你
多寫才會懂唷


--

高手你好呀
我看你都不回 所以我回了這篇文章 sorry啦
若我寫錯  請回大我信箱
kk...@m2.dj.net.tw
謝謝你的觀看呀

--
※ Origin: 程式設計樂園 ◆ From: dialup044.ppp.scu.edu.tw

棄我而去書卷小文^_^

unread,
Nov 24, 1999, 3:00:00 AM11/24/99
to
※ 引述《cvj...@Birding.m8.ntu.edu.tw (God)》之銘言:
: 你好!我初學C++,不知這題能否用較淺顯易懂的語法寫出來?
: 我實在想不出方法來解,拜託前輩幫忙一下...
: 謝謝啦...
: 設計一個符合下列四個條件的簡單計算機:
: (1) 該計算機要可處理基本的四則運算(先乘除後加減)
: (2) 讓使用者輸入一字串,該字串的內容即為四則運算式
: (3) 不必處理括號運算元
: (4) 所有輸入的數字,僅需介於 1 至 9
: E-mail:c...@tomail.com.tw


先說一下解法....
3+4*2-5*6稱為中序表示法(infix notation)
可是程式在執行的時候要把他改變成 342*+56*-
稱為後序表示法(postfix notation)

例如3+4---->34+
3*5---->35*
3*5-2----->35*2-
2-3*5----->235*-

Good luck!!

--
Origin: [1;36m<洗屁屁小站> [1;32mcpp.twbbs.org [1;33m(140.112.250.100)
Welcome to CPP BBS [1;36m-- [1;31mFrom : [mduer [1;31m[ [mDuercara.Dorm12.NCTU.eduT [1;31m] [m
--
Origin:【台大洗屁屁小站】《cpp.twbbs.org》《140.112.250.100》

1/2的頂點

unread,
Nov 25, 1999, 3:00:00 AM11/25/99
to
【 在 cvj...@Birding.m8.ntu.edu.tw (God) 的大作中提到: 】

: 你好!我初學C++,不知這題能否用較淺顯易懂的語法寫出來?
: 我實在想不出方法來解,拜託前輩幫忙一下...
: 謝謝啦...
: 設計一個符合下列四個條件的簡單計算機:
: (1) 該計算機要可處理基本的四則運算(先乘除後加減)
: (2) 讓使用者輸入一字串,該字串的內容即為四則運算式
: (3) 不必處理括號運算元
: (4) 所有輸入的數字,僅需介於 1 至 9
: E-mail:c...@tomail.com.tw
這個跟所用語言根本一點關係都沒有
一般的做法是把中序改後序來做

演算法如下

設有兩個陣列A,B A中為中序運算式,B為空的

再定義一些動作
shift a 將 a放到B中空位的第一個位子,A的index往後指一個
push a 把a放到堆疊裡 A的index往後指一個
pop 把堆疊最上方的內容放到B中空位的第一個位子

0.一開始A的index指到第一個
1.遇數字則將其shift
2.遇乘除則判斷stack最上層是否為乘除 若是則pop它 一直重覆此步直到stack最上
層不為乘除為止 再將這個乘除push
3.遇加減則將stack pop空再push 之
4.A的index沒得指時將stack pop光

ex 3+2*1

B stack A
shift 3 +2*1
push 3 + 2*1
shift 32 + *1
push 32 *+ 1
shift 321 *+
pop 321*
pop 321*+

得321*+

再由B的第一個往後找第一個運算元 再由此運算元往前找兩個數字計算成另一數
循環下去

ex 321*+
^^^
32+
^^^
5

--
棟折構崩 東山再起 枯樹開花 古道熱腸
不羈之才 小試鋒芒 歧路徬徨 支離破碎
何去何從 可有可無 論才論德 言人人殊
柳暗花明 木本水源 異途同歸 共相勉勵

[m [1;34m※ 來源:‧神秘之旅 bbs.ice.cycu.edu.tw‧[FROM: JavaBoy.ice.cycu.edu.tw] [m

0 new messages