1. 程式人生 > >逆波蘭表達式

逆波蘭表達式

表達式 code char 1.0 switch 輸出 return 內存 esp

逆波蘭表達式

鏈接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1198


時間限制: 1000 ms 內存限制: 65536 KB

【題目描述】

逆波蘭表達式是一種把運算符前置的算術表達式,例如普通的表達式2 + 3的逆波蘭表示法為+ 2 3。逆波蘭表達式的優點是運算符之間不必有優先級關系,也不必用括號改變運算次序,例如(2 + 3) * 4的逆波蘭表示法為* + 2 3 4。本題求解逆波蘭表達式的值,其中運算符包括+ - * /四個。

【輸入】

輸入為一行,其中運算符和運算數之間都用空格分隔,運算數是浮點數。

【輸出】

輸出為一行,表達式的值。

可直接用printf("%f\n", v)輸出表達式的值v。

【輸入樣例】

* + 11.0 12.0 + 24.0 35.0

【輸出樣例】

1357.000000
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
double n;
char s[101];
double j()
{
    
    cin>>s;
    switch(s[0])
    {
        case +:n=j()+j();break
; case *:n=j()*j();break; case -:n=j()-j();break; case /:n=j()/j();break; default:n=atof(s); } return n; } int main() { printf("%f\n",j()); }

逆波蘭表達式