码迷,mamicode.com
首页 > 其他好文 > 详细

计算表达式值

时间:2015-08-10 13:32:35      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

试题描述

后缀表达式是指运算符放在两个运算对象之后,所有计算按运算符出现的顺序,严格地从左到右进行。注意每个操作数之后都紧跟着一个“.”。
如:3×(5-2)+7对应的后缀表达式为3.5.2.-*7.+。
输入一个后缀表达式,求表达式的值。
注意本题中只出现+、-、*三种运算符。

 

输入
一行,一个后缀表达式。
输出
一行,一个整数,表示后缀表达式的值。
输入示例
3.5.2.-*7.+
输出示例
16
其他说明
表达式长度不超过50,所有操作数的值以及所有中间运算结果以及最终结果的绝对值均不超过10^6。

C程序:

#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<iostream> 
using namespace std;
int st[51];
int top;
void push(int ch){top++;st[top]=ch;}
void pop(){top--;}
void clear(){top=0;}
int main()
{
    char s[51];
    cin>>s;
    int ch=0; 
    for(int i=0;i<strlen(s);i++)
    {
        if(s[i]==.)
        {
             push(ch);
             ch=0;
        }
        else if(s[i]==+)
        {
            int temp=st[top]+st[top-1];
            pop();pop();
            push(temp);
        }
        else if(s[i]==-)
        {
            int temp=st[top-1]-st[top];
            pop();pop();
            push(temp);
        }
        else if(s[i]==*)
        {
            int temp=st[top]*st[top-1];
            pop();pop();
            push(temp);
        }
        else ch=ch*10+(s[i]-0);
    }
    printf("%d",st[top]);
    return 0;
}

 

计算表达式值

标签:

原文地址:http://www.cnblogs.com/WHYFRANK/p/4717696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!