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

字符串四则运算

时间:2014-05-22 07:48:44      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:c   a   int   os   name   har   

#include<iostream>//中缀表达式求值
#include<stack>
using namespace std;
 
int precede(char t1,char t2) //shuru//判断优先级
{
    int t=0;
    switch(t2)
    {
    case ‘+‘:
    case ‘-‘:
            if(t1==‘(‘||t1==‘#‘) t=-1;
            else t=1;
            break;
    case ‘*‘:
    case ‘/‘:
             if(t1==‘*‘||t1==‘/‘||t1==‘)‘)
                 t=1;
             else t=-1;
             break;
    case ‘#‘:
             if(t1==‘#‘) t=0;
             else t=1;
             break;
    case ‘(‘:
             t=-1;
             break;
    case ‘)‘:
             if(t1==‘(‘) t=0;
             else t=1;
             break;
    }
    return t;
}
 
int operate(int m,char cp,int n)//就算
{
 
   switch(cp)
   {
   case ‘+‘:
       return m+n;
   case ‘-‘:
       return m-n;
   case ‘*‘:
        return m*n;
   case ‘/‘:
        return m/n;
   }
   return 0;
}
int main()
{
    int m,n;
    char cp;
    stack<int> open;
    stack<char> optr;
    optr.push(‘#‘);//初始化
    char input[]="3*(4+2)/2-5#";
 
    int i=0;
    while(input[i]!=‘\0‘)
    {
        if(input[i]>=‘0‘&&input[i]<=‘9‘)
          open.push(input[i]-‘0‘);
        else
            switch(precede(optr.top(),input[i]))
        {
             case 1:
                 while(precede(optr.top(),input[i])==1)
                 {
                m=open.top();
                open.pop();
                n=open.top();
                open.pop();
                cp=optr.top();
                optr.pop();
                open.push(operate(n,cp,m));
                 }
                 if(precede(optr.top(),input[i])==-1)
                optr.push(input[i]);
                 else optr.pop();
                break;
             case -1:
                optr.push(input[i]);
                break;
             case 0:
                optr.pop();
                break;
        }
        i++;
    }
cout<<open.top()<<endl;
    return 0;
}

字符串四则运算,布布扣,bubuko.com

字符串四则运算

标签:c   a   int   os   name   har   

原文地址:http://blog.csdn.net/u013861473/article/details/26163595

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