所謂字尾表示式是指這樣的乙個表示式:式中不再引用括號,運算符號放在兩個運算物件之後,所有計算按運算符號出現的順序,嚴格地由左而右新進行(不用考慮運算子的優先順序)。
如:3*(5–2)+7對應的字尾表示式為:3.5.2.-*7.+@。』@』為表示式的結束符號。『.』為運算元的結束符號。
輸入格式:
輸入:字尾表示式
輸出格式:
輸出:表示式的值
分析:把數字加入棧,遇到運算子就取棧頂元素運算後加入。
**
vara:array[0..1000] of longint;
x,l:longint;
ch:char;
begin
x:=0;
while ch<>'@' do
begin
read(ch);
if ch in ['0'..'9'] then x:=x*10+ord(ch)-48;
if ch='.' then
begin
inc(l);
a[l]:=x;
x:=0;
end;
if ch='+' then
begin
a[l-1]:=a[l]+a[l-1];
dec(l);
end;
if ch='-' then
begin
a[l-1]:=a[l-1]-a[l];
dec(l);
end;
if ch='*' then
begin
a[l-1]:=a[l-1]*a[l];
dec(l);
end;
if ch='/' then
begin
a[l-1]:=a[l-1] div a[l];
dec(l);
end;
end;
writeln(a[1]);
end.
洛谷 P1449 字尾表示式
題目描述 所謂字尾表示式是指這樣的乙個表示式 式中不再引用括號,運算符號放在兩個運算物件之後,所有計算按運算符號出現的順序,嚴格地由左而右新進行 不用考慮運算子的優先順序 如 3 5 2 7對應的字尾表示式為 3 5 2 7 為表示式的結束符號。為運算元的結束符號。輸入格式 輸入 字尾表示式 輸出格...
P1449 字尾表示式(洛谷)
思路 定義乙個來存放int型的棧,然後將輸入的資料轉換後存入棧中,但是以運算符號為分割,先進第乙個數,再進第二個數,接著將後進的數先丟擲,此時先進的數就是棧頂元素了,然後將這兩個數做運算後再將第乙個數丟擲以及將運算結果sum壓入棧中,以此迴圈即可。include using namespace st...
洛谷 P1449 字尾表示式
這道題是一道比較簡單的計算器模擬,因為他沒有涉及到括號的輸入,也不需要判斷符號之間的優先順序,只需要將不同的數字計算出來,然後每次讀取到運算符號的時候就從棧中彈出兩個數字進行計算,將計算的結果壓入棧中,只需要乙個數字棧就可以,而不需要符號棧。用題中所給的測試資料來模擬一下這個過程 在程式中需要注意的...