邏輯提問式 a bc d e 的展開表示式是什麼

時間 2021-10-14 20:20:42

1樓:黃志光律師

a*b*c → **abc

a*b*c+c*d → +**abc*cd

(a+b)*((c-d)*e+f) → *+ab+*-cdef

上面是波蘭式,逆波蘭式如下:

a*b*c → ab*c*

a*b*c+c*d → ab*c*cd*+

(a+b)*((c-d)*e+f) → ab+cd-e*f+*

寫出(a+b)*((c-d)*e+f)轉換時棧的變化情況:【注意,右端為棧頂】

讀入(,入棧,棧中為(,輸出:(空);

讀入a,直接輸出,棧中為(,輸出:a;

讀入+,入棧,棧中為(+,輸出:a;

讀入b,直接輸出,棧中為(+,輸出:ab;

讀入),依次推出棧中的符號,直到遇見一個(【注意括號不輸出】,棧中為空,輸出:ab+;

讀入*,入棧,棧中為*,輸出:ab+;

讀入(,入棧,棧中為*(,輸出:ab+;

讀入(,入棧,棧中為*((,輸出:ab+;

讀入c,直接輸出,棧中為*((,輸出:ab+c;

讀入-,入棧,棧中為*((-,輸出:ab+c;

讀入d,直接輸出,棧中為*((-,輸出:ab+cd;

讀入),依次推出棧中的符號,直到遇見一個(【注意括號不輸出】,棧中為*(,輸出:ab+cd-;

讀入*,入棧,棧中為*(*,輸出:ab+cd-;

讀入e,直接輸出,棧中為*(*,輸出:ab+cd-e;

讀入+,【由於此時棧中的*的優先順序高於+,所以先將*退棧,然後+入棧】,棧中為*(+,輸出:ab+cd-e*;

讀入f,直接輸出,棧中為*(+,輸出:ab+cd-e*f;

讀入),依次推出棧中的符號,直到遇見一個(【注意括號不輸出】,棧中為*,輸出:ab+cd-e*f+;

此時讀入已經完畢,棧中還剩一個*,輸出:ab+cd-e*f+*完畢!

2樓:清雨梧桐夢

(a+b)*(c+d+e)=ac+ad+ae+bc+bd+be

算術表示式a+b*(c+d/e )轉為字尾表示式是?具體分析下!謝謝!! 20

3樓:59分粑粑

轉為字尾表示式是「abcde/+*+ 」。

a+b*(c+d/e)   (a+(b*(c+(d/e))))通過根據運算子的優先順序將所有算術單元括起來,該表示式變為:(a+(b*(c+(d/e)))),然後轉換字尾表示式。

字尾:將操作符號移到相應的括號之後,然後變為:(a(b(c(de)/)+)*)+

除去括號後的表示式是字尾表示式:abcde/+*+

4樓:蘑菇西餐

轉化後的字尾表示式為:abcde/+*+

具體分析:

1、初始化一空棧,用來對符號進出棧使用。

2、第一個字元是a,輸出,後面是符號「+」,進棧。輸出的為a。

3、第三個字元是b,輸出,後面是符號「*」,進棧。輸出的為ab。

4、 第五個字元是「(」,依然是符號,因其只是左括號,還未配對,故進棧。輸出的為ab。

5、第六個字元是c,輸出,後面是符號「+」,進棧。輸出的為abc。

6、第八個字元是d,輸出,後面是符號「/」,進棧。輸出的為abcd。

7、後面是字元e,輸出,之後是「)」配對完成。進棧輸出的為abcde。

8、棧頂元素「(」出棧,「/」出棧,「+」出棧,「(」出棧,括號配對完成。

9、之後也是依次出棧,最後結果為:abcde/+*+。

擴充套件資料:

字尾表示式進行計算的通用做法:

可以先建立一個棧s 。從左到右讀表示式,如果讀到運算元就將它壓入棧s中,如果讀到n元運算子(即需要引數個數為n的運算子)則取出由棧頂向下的n項按操作符運算,再將運算的結果代替原棧頂的n項,壓入棧s中 。如果字尾表示式未讀完,則重複上面過程,最後輸出棧頂的數值則為結束。

字尾表示式:也叫逆波蘭表示法(reverse polish notation,rpn,或逆波蘭記法),是一種是由波蘭數學家揚·武卡謝維奇2023年引入的數學表示式方式,在逆波蘭記法中,所有操作符置於運算元的後面,因此也被稱為字尾表示法。逆波蘭記法不需要括號來標識操作符的優先順序。

實際意義:

1、當有操作符時就計算,因此,表示式並不是從右至左整體計算而是每次由中心向外計算一部分,這樣在複雜運算中就很少導致操作符錯誤。

2、堆疊自動記錄中間結果,這就是為什麼逆波蘭計算器能容易對任意複雜的表示式求值。與普通科學計算器不同,它對表示式的複雜性沒有限制。

3、逆波蘭表示式中不需要括號,使用者只需按照表示式順序求值,讓堆疊自動記錄中間結果;同樣的,也不需要指定操作符的優先順序。

4、逆波蘭計算器中,沒有「等號」鍵用於開始計算。

5、逆波蘭計算器需要「確認」鍵用於區分兩個相鄰的運算元。

6、機器狀態永遠是一個堆疊狀態,堆疊裡是需要運算的運算元,棧內不會有操作符。

7、教育意義上,逆波蘭計算器的使用者必須懂得要計算的表示式的含義。

5樓:莫道無情

轉為字尾表示式是abcde/+*+

a+b*(c+d/e)   (a+(b*(c+(d/e))))按照運算子的優先順序對所有的運算單位加括號,式子變成了:(a+(b*(c+(d/e)))),然後轉換字尾表示式。

字尾:把運算子號移動到對應的括號後面,則變成了:(a(b(c(de)/)+)*)+

把括號去掉後的式子則為字尾表示式: abcde/+*+

6樓:匿名使用者

a+b*(c+d/e)

(a+(b*(c+(d/e)))) 按計算順序加上括號(a(b(c(de)/)+)*)+ 把運算子放到括號外面abcde/+*+ 去掉括號

7樓:匿名使用者

abcde/+*+

腦算,沒用程式設計實現!

字尾表示式是從左到右算。

我給你說說我的技巧吧,也許你就學會了。

1。先寫好順序 abcde

2。然後按運算順序符號 abcde/ abcde/+ abcde/+* abcde/+*+

ok解決。

心得技巧:這是按符號算,從第一個符號的左邊倆個數開始算。每個符號都是算符號左邊的兩個數!

sorry.

有一個字元型的表示式(a+b)*(c+d),要求得到a*c+a*d+b*c+b*d,請問用c++該如何處理 15

8樓:匿名使用者

設定兩個棧,一個資料棧,一個運算子棧,由左邊讀取,第一個"("寫入運算子棧

第二個a寫入資料棧

第三個「+」寫入一個運算子棧

第四個b 檢視下一位不是* / 而且運算子棧第一位是+號那麼就 「a」 「+」 出棧,計算出結果(假設為a)來後放回資料棧

第五個「)」出棧"(", 」a「 與」)「計算後a繼續放回資料棧。。。。

一時講不清,自己看書吧

9樓:武灼弦

以string(或char)儲存輸入的表示式,然後用isnum()(判斷字元是否為0-9)獲取a,b,c,d的值(可用+ -號做間隔),分別存取到一個整型陣列a[4]中(需要itoa()函式的呼叫,也可以使用強制型別轉換如int(a),如果abcd不大的話),然後x=a[1]+a[2],y=a[3]+a[4],最後列印字元a[0]*a[2]+……+a[1]*a[3];輸出結果為x*y。(該演算法比較簡單,沒有檢查輸入格式的正確性,你可以自己進行設定)

10樓:匿名使用者

沒太明白你的想法.... 我按我的想法說說:

比如(1 - 2)*(3 + 4)不就是3 + 4 - 6 - 8 嗎,每個數能確定,每個符號也能確定,還需要演算法嗎? 換成字元不也是一樣嗎。就是第幾個和第幾個的問題。

資料結構習題:下列表示式轉化成字尾式(a+b)*(c/(d-e)+f)+ab*c

11樓:

標準答案:ab+cde-/f+*abc*+

12樓:匿名使用者

ab*cde-/f+*abc**+

13樓:蘑菇飯資訊

abcd/e+*+

腦算,沒用程式設計實現!

字尾表示式是從左到右算。

我給你說說我的技巧吧,也許你就學會了。

1。先寫好順序 abcde

2。然後按運算順序符號 abcd/e abcd/e+ abcd/e+* abcd/e+*+

ok解決。

心得技巧:這是按符號算,從第一個符號的左邊倆個數開始算。每個符號都是算符號左邊的兩個數!

資料結構中寫出a+b*(c-d)-e/f的字首、中綴、字尾表示式。

14樓:匿名使用者

字首:-+a*b-cd/ef

中綴:a+b*(c-d)-e/f

字尾:abcd-*+ef/-

數學 邏輯問題的提問,一個數學 邏輯問題的提問

額我覺得應該是c 紅 白紅白 他們都看著前方 一開始,他們誰都不知道 d看著前面是白紅,無法判斷 c看著白,也無法判斷 a,b也不知道 但是,當有人問過全部人他們知不知道,那麼就會知道答案d看到前面不同,就會猶豫,答不知道。那麼d答不出來,說明前面兩頂帽子不同 由於b是白的,c就知道自己的是紅的 希...

VB中邏輯表示式怎麼表示,請問,VB中的邏輯運算子都是什麼意思?

不周期彗星 1 x y小於10 且 x y要大於0 x y 10 and x y 0 2 x.y都是正整數或都是負整數 int x x and int y y and sng x sng y 3 a.b之一為零但不得同時為零 a 0 or b 0 and a b 4 c1 c2 c3大於等於255或...

如何修煉強大的邏輯表達能力,如何提高表達能力和邏輯思維能力

提高邏輯表達能力,溝通也要懂套路,看懂你也可以成為口才高手 如何提高表達能力和邏輯思維能力 第二次回答這類問題了,我就直接複製了!提高表達能力 1.要敢說,大膽去說。不怕說錯就怕不敢說,說錯了可以發現問題然後就行。2.在人多的地方和人交流,學會和陌生人說話。3.和長輩或者老師交流。4.演講或者在在人...