百練 四則運算表示式求值

2021-08-20 02:56:45 字數 1554 閱讀 7528

總時間限制: 

1000ms

記憶體限制: 

65536kb 描述

求乙個可以帶括號的小學算術四則運算表示式的值

輸入一行,乙個四則運算表示式。'*'表示乘法,'/'表示除法

輸出一行,該表示式的值,保留小數點後面兩位

樣例輸入

輸入樣例1:

3.4輸入樣例2:

7+8.3

輸入樣例3:

3+4.5*(7+2)*(3)*((3+4)*(2+3.5)/(4+5))-34*(7-(2+3))

樣例輸出

輸出樣例1:

3.40

輸出樣例2:

15.30

輸出樣例3:

454.75

ac**:

#include#include#include#include#includeusing namespace std;

stacks1;//數字

stacks2;//運算子

stacks3;

char ch[1010]=;

int pro(char c)

bool isy(char c)

double cal(double aa,double bb,char c)

int main()

else if(s2.empty()||str[i]=='('||pro(str[i])>pro(s2.top()))

s2.push(str[i]);

else if(str[i]==')')

s2.pop();//彈出左括號。

}else

s2.push(str[i]);//最後把自己放進去。}}

while(!s2.empty())

//此時字尾表示式在棧中。還需要取數,挪棧。

int m=s1.size();

int k=m;

while(!s1.empty())

//從左到右掃瞄ch

for(int i=0; i='0'&&ch[i]<='9')

if(ch[i]=='.')i++;

int p=1;

while(ch[i]!='#')//這裡進行小數部分的計算

sum=zs+xs;

s3.push(sum);

}else if(isy(ch[i])) //如果是運算子

}printf("%.2f",s3.top());

return 0;

}

ps:寫了有5個小時。。。。辣雞。深入理解了表示式求值。

1.生成字尾表示式。先生成字尾表示式存在乙個棧裡,需要對表示式中的每一位進行判斷,如果是數字或小數點怎麼辦,如果是括號和運算子,重點是需要考慮符號優先順序,什麼時候入符號棧什麼時候彈出符號棧。並將棧中的倒序放進陣列。

2.計算字尾表示式。掃瞄字尾表示式,遇到數字放進棧裡,遇到符號從棧頂彈出兩個計算,後放進棧裡。

看到乙個ac的python3的**只有28b,==,所以我要學python。==

四則運算表示式求值

03 四則運算表示式求值 輸入輸入為四則運算表示式,僅由陣列 四則運算符 左右括號組成,不含空格。假設運算子結果都是整數。輸出輸出這個表示式的值 分析首先我們要搞清楚表示式的定義是什麼 表示式 由乙個或者多個項組成,多個項的表示式由 連線 項 由乙個或者多個因子組成,多個因子由 連線 因子 由 表示...

四則運算表示式求值

表示式求值是關於棧的應用,涉及到中綴與字尾式的轉換,本文關於10以內不帶括號的四則運算。9 3 4 x 3 24 1 x 9 5 9 9 5 x 9 4 6 2 x 3 1 42 思路 遇到數字直接入數字棧。遇到運算子,第乙個運算子直接入符號棧,後面的需要與符號棧棧頂元素比較優先順序。若當前優先順序...

四則運算表示式總結

這兩周完成了第乙個個人專案 四則運算表示式。在整個開發的過程中我有一些收穫也發現了自身的一些問題。下面就分條簡述一下。1 實現隨機生成任意長度的四則表示式 括號 2 實現四則表示式的計算 包括分數 3 實現接收使用者對某四則運算表示式計算的結果並判斷正確性。4 實現結合1 2 3功能的mfc應用程式...