ZZ的计算器

Problem Description

ZZ自从上大学以来,脑容量就是以SB计算的,这个吃货竟然连算术运算也不会了,可是当今的计算机可是非常强大的,作为ACMer, 几个简单的算术又算得了什么呢?可是该怎么做呢?ZZ只想算简单的加减乘除,由于大脑钝化,ZZ连小数都没有概念了!

Input

有多组测试数据,每组测试数据为一个字符串,字符串为合法的算术运算,运算符号只包含+、-、*、/,数据为整数.

Output

请输出正确的结果,除数为0的时候,输出impossible。(结果保证在长整形之内)

Sample Input

1+1*2
2/2+1

Sample Output

3
2
题意:简单的表达式计算只包含加减乘除
题解:数组直接模拟,先处理乘除再加减

#include<stdio.h> #include<iostream> #include<string> using namespace std; #define LL __int64 LL p[200];

int main() {     int i,j,flag,temp,pos,cnt;  string s;  while(cin>>s)  {   flag=0;   for(i=0;i<s.length();i++)   {    if(s[i]=='/'&&s[i+1]=='0') {flag=1;break;}   }   if(flag) puts("impossible");      else   {    temp=0;    cnt=0;    for(i=0;i<s.length();i++)    {     if(s[i]>='0'&&s[i]<='9')     {      temp=temp*10+s[i]-'0';     }     else break;    }    pos=i;    p[cnt]=temp;    for(i=pos;i<s.length();i++)    {     temp=0;     for(j=i+1;s[j]>='0'&&s[j]<='9';j++)     {                    temp=temp*10+s[j]-'0';     }     cnt++;     if(s[i]=='+') p[cnt]=temp;     else if(s[i]=='*') p[--cnt]*=temp;     else if(s[i]=='/') p[--cnt]/=temp;     else p[cnt]=-temp;     i=j-1;    }    for(i=1;i<=cnt;i++)    {     p[0]+=p[i];    }    printf("%I64d\n",p[0]);   }  }  return 0; }

posted @ 2013-07-25 08:54  forevermemory  阅读(240)  评论(0编辑  收藏  举报