問題 A 簡單計算器

2021-09-26 06:49:32 字數 950 閱讀 7217

最近刷codeup時,逐步感到題目難度的提公升因此在後續階段,會逐步更新一些codeup中有一些難度的題目.

思路:看到題目後,就首先想到了資料結構時,所學習到的中綴以及字尾表示式。實現思路如下:

1、首先將中綴表示式轉換成字尾表示式,這裡我們需要借助佇列與棧。對中綴表示式進行處理,對於數字直接將其push到佇列中;對於符號,判斷當前符號與符號棧棧頂符號的優先順序關係,如果當前符號的優先順序小於棧頂符號,棧頂符號出棧進入佇列,並繼續比較。否則將當前符號入棧。

2、得到字尾表示式後,對字尾表示式進行計算,依次從佇列中pop。同時需要使用乙個棧存放結果。對於佇列中提取出的字元,分為兩種情況,數字直接入棧,操作符需要從棧頂依次pop出兩個數進行操作符對應計算後,將結果重新入棧。最後棧中僅剩的乙個數字就是我們的計算結果。

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

struct node;

queueq;

stacks;

string str;

mapmp;

void change()

q.push(temp);

}else

temp.op = str[i];

s.push(temp);

i++;

} }while(!s.empty())

}double cal()

} return s.top().num;

}int main()

} while(!s.empty()) s.pop();

change();

node t;

/*while(!q.empty())else

q.pop();

}*/printf("%.2f\n", cal());

} return 0;

}

問題 A 簡單計算器

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

6 7 問題 A 簡單計算器

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

簡單計算器

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,buttons,math math是數 算單元 type tform1 class ...