Postfix expressions(Data Structure)

来源:互联网 发布:网络推手汇航 编辑:程序博客网 时间:2024/06/04 19:11

Input

Integer is the first line,the number of the test caseis t.

Following t lines, each line is a string whose length does not exceed 100, representing a Postfix expression. Expression containing only +,-, *,/four operators and the 26 lowercase letters of the alphabet, does not contain other characters. Each letter represents a positive integer:
a = 1,b = 2,c = 3…y = 25,z = 26.

Output

Each input sample, single line output: Postfix expression value, a positive real number s, to two decimal places.

Case

Sample Input

2ab+c*int**py++

Sample Output

9.002561.00

Using the stack to solve the problem,if the traverse run into the letters, then push into the stack,otherwise, let the top element in the stackmake the operations to the next letter,then push the result into thestack.
Finally,output the number with two decimal places, using fixedand setprecision(2).

code (Hope have a help to you)

#include<iostream>#include<string>#include<stack>#include <iomanip>using namespace std;int main() {    int n;    cin >> n;    while (n--) {        stack<float> temp;        string str;        cin >> str;        int size = str.length();        for (int i = 0; i < size; i++) {            if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/') {                float a = temp.top();                temp.pop();                float b = temp.top();                temp.pop();                if (str[i] == '+') {                    b += a;                    temp.push(b);                } else if (str[i] == '-') {                    b -= a;                    temp.push(b);                } else if (str[i] == '*') {                    b *= a;                    temp.push(b);                } else if (str[i] == '/') {                    b /= a;                    temp.push(b);                }            } else {                temp.push(str[i]-'a'+1);            }        }        cout<<fixed<<setprecision(2)<<temp.top()<<endl;    }}
0 0
原创粉丝点击