zoukankan      html  css  js  c++  java
  • 计算用字符串表示的个位数四则运算的值(栈)

    比如eval("1+4*3/2-5")=2

    View Code
     1 #include <iostream>
     2 using namespace std;
     3 
     4 int calculate(char *expStr)
     5 {
     6     int stack[100];
     7     int top=-1;
     8     stack[++top]=expStr[0]-'0';
     9     for(int i=1;i<strlen(expStr);i+=2)
    10         if(expStr[i]=='*')
    11             stack[top]=stack[top]*(expStr[i+1]-'0');
    12         else if(expStr[i]=='/')
    13             stack[top]=stack[top]/(expStr[i+1]-'0');
    14         else
    15         {
    16             if(expStr[i]=='+')
    17                 stack[++top]=-1;
    18             else 
    19                 stack[++top]=-2;
    20             stack[++top]=expStr[i+1]-'0';
    21         }
    22     int result=stack[0];
    23     for(int i=1;i<top;i+=2)
    24         if(stack[i]==-1)
    25             result+=stack[i+1];
    26         else if(stack[i]==-2)
    27             result-=stack[i+1];
    28     return result;
    29 }
    30 
    31 int main()
    32 {
    33     char *expStr = "8*2-9/2+4*5/2-9/3";
    34     cout<<calculate(expStr)<<endl;
    35     
    36     system("pause");
    37     return 0;
    38 }

    这个问题是整数四则运算的简化版,而且简化的很多,1)只是个位数的运算,2)不允许有括号。如果那位能够解决不受这两条限制的整数四则运算问题,请不吝赐教。。

  • 相关阅读:
    数据库创建用户SQL
    团队总结和展示
    第十三周总结
    梦断代码02
    第十二周进度博客
    团队冲刺第十五天
    团队冲刺第十四天
    团队冲刺第一阶段评价
    梦断代码01
    第十一周进度博客
  • 原文地址:https://www.cnblogs.com/emituofo/p/2767336.html
Copyright © 2011-2022 走看看