ZZ的计算器
Problem Description
Input
Output
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; }