您的位置:首页 > 其它

NOIP2000计算器的改良

2014-03-30 00:11 483 查看
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char ch[10001],al;
bool neg,alp,rev;
int a,b,t=1;
int main(){
scanf("%s",ch+1);ch[strlen(ch+1)+1]='+';
for(int i=1;i<=strlen(ch+1);i++){
if(ch[i]=='-'||ch[i]=='+'||ch[i]=='='){
if(rev)t=-t;
if((i==1||ch[i-1]=='=')&&ch[i]=='-')neg=true;
else{
if(!neg)
if(alp){a+=t;alp=false;t=1;}
else{b+=t;t=1;}
else
if(alp){a-=t;alp=false;t=1;neg=false;}
else{b-=t;t=1;neg=false;}
if(ch[i]=='-')neg=true;
}
if(ch[i]=='=')rev=true;
}
else if(ch[i]>='0'&&ch[i]<='9'){
t=(int)(ch[i]-'0');i++;
while(ch[i]>='0'&&ch[i]<='9'){
t=t*10+(int)(ch[i]-'0');i++;}
i--;
}
else {alp=true;al=ch[i];}
}
if(b)printf("%c=%.3lf",al,(double)(-b)/(double)a);
else printf("%c=0.000",al);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: