堆疊實現簡單計算器

2021-10-05 23:10:37 字數 1181 閱讀 4953

讀入乙個只包含加減乘除的非負整數計算表示式,計算表示式的值,整數和運算子之間用乙個空格分隔。

#include

#include

using

namespace std;

char str[

200]

;//儲存表示式字串

int mat[

5]=;

stack<

int> op;

//運算子棧

stack<

double

> in;

//數字棧

void

getop

(bool

&reto,

int&retn,

int&i)

if(str[i]==0

)if(str[i]

>=

'0'&&str[i]

<=

'9')

else

else

if(str[i]

=='-'

)else

if(str[i]

=='*'

)else

if(str[i]

=='/')

i +=2

;return;}

retn =0;

for(

; str[i]

!=' '

&&str[i]!=0

; i++)if

(str[i]

==' '

)return;}

intmain()

else

else

op.push

(retnum);}

}if(op.

size()

==2&& op.

top()==

0)break

;//若運算子棧只有兩個元素,且棧頂元素為標記運算子,則表示式求值結束。

}printf

("%.2f\n"

, in.

top())

;//輸出數字棧中唯一的數字,即為答案

}return0;

}

運算結果

堆疊入門 簡單計算器

題目鏈結 解題思路 利用堆疊對表示式求值的方法在任意一本資料結構教科書上都會做明確的闡述。這裡簡單的回顧 1.設立兩個堆疊,乙個用來儲存運算子,另乙個用來儲存數字。2.在表示式首尾新增標記運算子,該運算子運算優先順序最低。3.從左至右依次遍歷字串,若遍歷到運算子,則將其與運算子棧棧頂元素進行比較,若...

HDU1237 簡單計算器 堆疊

讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。input 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。output 對每個測試用例輸出1行,即該表示式的值,精確到小數點後...

簡單計算器的實現

計算器 問題描述 輸入乙個簡單四則運算表示式字串,計算該表示式的值 注 1 表示式只含 四則運算符 2 表示式數值只包含整數 0 9 每個運算元可以是多位,且不會出現0作為除數的情況 3 要考慮加減乘除按通常四則運算規定的計算優先順序 4 除法用整數除法,即僅保留除法運算結果的整數部分。比如80 3...