九度oj-1101

题目描述:

对于一个不存在括号的表达式进行计算

输入:

存在多种数据,每组数据一行,表达式不存在空格

输出:

输出结果

样例输入:

6/2+3+3*4

样例输出:

18

代码

#include <iostream>  
#include <stdio.h>  
#include <string.h>  
#include <algorithm>  
#include <math.h>  
#include <stack>  
#define ISYEAP(x) x%100!=0 && x%4==0 || x%400==0 ? 1:0  

using namespace std;  

int num[110];  
bool judge(char cha){  
   if(cha=='+' || cha=='-' || cha=='*' || cha=='/')  
     return true;  
    return false;  
}  
int main(){  
   int numb;  
   char c;  
   int count=0;  
   while(scanf("%d",&numb)!=EOF){  
       memset(num,0,110*sizeof(int));  
       num[0]=numb;  
       count=0;  
      while(scanf("%c",&c)!=EOF && judge(c)){  
         cin>>numb;  
         if(c=='+')  
         {  
             num[++count]=numb;  
         }  
         if(c=='-')  
         {  
             num[++count]-=numb;  
         }  
         if(c=='*')  
         {  
             num[count]*=numb;  
         }  
         if(c=='/')  
         {  
             num[count]/=numb;  
         }  
      }  
      int answer=0;  
      for(int i=0;i<=count;i++){  
        answer+=num[i];  
      }  
      cout<<answer<<endl;  
   }  
}  

作者提醒:

设想这种情况,式子中只有+号,那么结果可以看成是若干数之和。实际情况下,不止+号,
还有-,*,/号。-号可以看成是减号后一个数的负数,*号的操作方式是符号的前后两个数直接运算。
最后就化简成我们所设想的情况。