模拟计算器

来源:互联网 发布:上海1943和老街知乎 编辑:程序博客网 时间:2024/06/11 15:08
只是一个计算器模拟的,只能算加减乘#include #include #include #include using namespace std;/*输入一个表达式:1+2*3+4-2+23判断是不是数字:{true:1 2 3 4 2 23}n【2】*n【3】=n【2】 {false :+ * + - + } n【3】=0;n【4】-n【5】=n【4】,n【5】=0 ans=n【2】+n【3】+.....+n【p-1】/2; */ int main(){while(1){int sign[100010],s,ans,uuu,cheng1,cheng2,chengfa1,chengfa2;char s1[100010];memset(sign,0,sizeof sign);gets(s1);s=strlen(s1);for(int i=0;i<s;i++){if(s1[i]=='-'||s1[i]=='*'||s1[i]=='+') continue;sign[i]=s1[i]-'0';}for(int i=0;i<s;i++){if(sign[i]!=0&&sign[i+1]!=0&&sign[i+2]!=0&&sign[i+3]!=0&&sign[i+4]!=0&&sign[i+5]!=0&&sign[i+6]!=0&&sign[i+7]!=0&&sign[i+8]!=0&&sign[i+8]!=0&&sign[i+9]!=0){sign[i]*=1000000000;sign[i]+=(sign[i+1]*100000000+sign[i+2]*10000000+sign[i+3]*1000000+sign[i+4]*100000+sign[i+5]*10000+sign[i+6]*1000+sign[i+7]*100+sign[i+8]*10+sign[i+9]);sign[i+1]=0;sign[i+2]=0;sign[i+3]=0;sign[i+4]=0;sign[i+5]=0;sign[i+6]=0;sign[i+7]=0;sign[i+8]=0;sign[i+9]=0;}else if(sign[i]!=0&&sign[i+1]!=0&&sign[i+2]!=0&&sign[i+3]!=0&&sign[i+4]!=0&&sign[i+5]!=0&&sign[i+6]!=0&&sign[i+7]!=0&&sign[i+8]!=0&&sign[i+8]!=0){sign[i]*=100000000;sign[i]+=(sign[i+1]*10000000+sign[i+2]*1000000+sign[i+3]*100000+sign[i+4]*10000+sign[i+5]*1000+sign[i+6]*100+sign[i+7]*10+sign[i+8]);sign[i+1]=0;sign[i+2]=0;sign[i+3]=0;sign[i+4]=0;sign[i+5]=0;sign[i+6]=0;sign[i+7]=0;sign[i+8]=0;}else if(sign[i]!=0&&sign[i+1]!=0&&sign[i+2]!=0&&sign[i+3]!=0&&sign[i+4]!=0&&sign[i+5]!=0&&sign[i+6]!=0&&sign[i+7]!=0){sign[i]*=10000000;sign[i]+=(sign[i+1]*1000000+sign[i+2]*100000+sign[i+3]*10000+sign[i+4]*1000+sign[i+5]*100+sign[i+6]*10+sign[i+7]);sign[i+1]=0;sign[i+2]=0;sign[i+3]=0;sign[i+4]=0;sign[i+5]=0;sign[i+6]=0;sign[i+7]=0;}else if(sign[i]!=0&&sign[i+1]!=0&&sign[i+2]!=0&&sign[i+3]!=0&&sign[i+4]!=0&&sign[i+5]!=0&&sign[i+6]!=0){sign[i]*=1000000;sign[i]+=(sign[i+1]*100000+sign[i+2]*10000+sign[i+3]*1000+sign[i+4]*100+sign[i+5]*10+sign[i+6]);sign[i+1]=0;sign[i+2]=0;sign[i+3]=0;sign[i+4]=0;sign[i+5]=0;sign[i+6]=0;}else if(sign[i]!=0&&sign[i+1]!=0&&sign[i+2]!=0&&sign[i+3]!=0&&sign[i+4]!=0&&sign[i+5]!=0){sign[i]*=100000;sign[i]+=(sign[i+1]*10000+sign[i+2]*1000+sign[i+3]*100+sign[i+4]*10+sign[i+5]);sign[i+1]=0;sign[i+2]=0;sign[i+3]=0;sign[i+4]=0;sign[i+5]=0;}else if(sign[i]!=0&&sign[i+1]!=0&&sign[i+2]!=0&&sign[i+3]!=0&&sign[i+4]!=0){sign[i]*=10000;sign[i]+=(sign[i+1]*1000+sign[i+2]*100+sign[i+3]*10+sign[i+4]);sign[i+1]=0;sign[i+2]=0;sign[i+3]=0;sign[i+4]=0;}else if(sign[i]!=0&&sign[i+1]!=0&&sign[i+2]!=0&&sign[i+3]!=0){sign[i]*=1000;sign[i]+=(sign[i+1]*100+sign[i+2]*10+sign[i+3]);sign[i+1]=0;sign[i+2]=0;sign[i+3]=0;}else if(sign[i]!=0&&sign[i+1]!=0&&sign[i+2]!=0){sign[i]*=100;sign[i]+=(sign[i+1]*10+sign[i+2]);sign[i+1]=0;sign[i+2]=0;}else if(sign[i]!=0&&sign[i+1]!=0){sign[i]*=10;sign[i]+=sign[i+1];sign[i+1]=0;}else{} } for(int i=0;i<s;i++){if(s1[i]=='*') {for(int j=0;j<s;j++){if(sign[i-j]!=0){cheng1=j;break;}}for(int j=0;j<s;j++){if(sign[i+j]!=0){cheng2=j;break;}}sign[i-cheng1]=sign[i-cheng1]*sign[i+cheng2];sign[i]=0; sign[i+cheng2]=0;}}for(int i=0;i<s;i++){if(s1[i]=='-') {sign[i]=sign[i-1]-sign[i+1];sign[i-1]=0; sign[i+1]=0;}}for(int i=0;i<s;i++){ans+=sign[i];} cout<<ans;free(sign);free(s1);}return 0;}