7 4 表示式轉換

2021-10-06 19:21:55 字數 2562 閱讀 5002

算術表示式有字首表示法、中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。

輸入在一行中給出不含空格的中綴表示式,可包含+、-、*、\以及左右括號(),表示式不超過20個字元。

在一行中輸出轉換後的字尾表示式,要求不同物件(運算數、運算符號)之間以空格分隔,但結尾不得有多餘空格。

2+3

*(7-

4)+8

/4

237

4-*+

84/+

#include

#include

#include

using status =

int;

using elemtype =

char

;#define initsize 30

#define increment 10

#define max 20

#define overflow -2

#define error 0

#define ok 1

struct stack

;status initstack

(stack *s)

s->top = s-

>base;

s->stacksize = initsize;

return ok;

}status push

(stack *s, elemtype e)

s->top = s-

>base + s-

>stacksize;

s->stacksize +

= increment;

}*s-

>top++

= e;

return ok;

}status pop

(stack *s, elemtype *e)

*e =

*--s-

>top;

return ok;

}status change

(stack *s, elemtype str)

}if(str[i]

=='+'

|| str[i]

=='-'

)else

else

}while

(s->top - s-

>base >

0&& e !=

'(')

;push

(s, str[i]);

}}else

if(str[i]

==')')}

//剛開始測試1+((2+3)x4)-5一直不對,後來發現書寫的符號和計算機的不一樣,於是再多加了條件判斷『x』和『x』

else

if(str[i]

=='*'

|| str[i]

=='/'

|| str[i]

=='('

|| str[i]

=='x'

|| str[i]

=='x'

)else

if(str[i]

=='\0'

)else

i++;}

while

(s->top - s-

>base)

return ok;

}int

main()

#include

#include

#include

intisnum

(char c)

;int

iszhengfu

(char c)

;int

compare

(char a,

char b)

;int

main()

printf

("%c"

,str1[i]);

}elseif(

iszhengfu

(str1[i])&&

(i?!

isnum

(str1[i-1]

)&& str1[i-1]

!=')':1

))printf

("%c"

,str1[i]);

}}else

}else

else

break;}

str2[flag++

]= str1[i];}

}else str2[flag++

]= str1[i]

;for

( j=

0; j}}

while

(flag)

return0;

}int

isnum

(char c)

intiszhengfu

(char c)

intcompare

(char a,

char b)

}}

7 4 表示式轉換 (25 分)

7 4 表示式轉換 25 分 算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。在一行中輸出轉換後的字...

表示式轉換 中綴表示式轉換為字尾表示式

算術表示式有字首表示法 中綴表示法和字尾表示法等形式。日常使用的算術表示式是採用中綴表示法,即二元運算子位於兩個運算數中間。請設計程式將中綴表示式轉換為字尾表示式。輸入格式 輸入在一行中給出不含空格的中綴表示式,可包含 以及左右括號 表示式不超過20個字元。輸出格式 在一行中輸出轉換後的字尾表示式,...

表示式轉換

2 3 7 4 8 4 2 3 7 4 8 4 思路 a.若為 入棧 b.若為 則依次把棧中的的運算子加入字尾表示式中,直到出現 從棧中刪除 c.若為 除括號外的其他運算子,當其優先順序高於除 以外的棧頂運算子時,直接入棧。否則從棧頂開始,依次彈出比當前處理的運算子優先順序高和優先順序相等的運算子,...