记录编号 |
139662 |
评测结果 |
AAAAA |
题目名称 |
[NOIP 2000PJ]计算器的改良 |
最终得分 |
100 |
用户昵称 |
席一鸣 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.001 s |
提交时间 |
2014-11-14 08:48:37 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iomanip>
#include<iostream>
using namespace std;
char X;
double o=0,u=0;
int g(char*s,int p,int e)
{
int i,l=0;
for(i=p;i<e;i++)
{
if(isdigit(s[i]))
l++;
else
return l;
}
return l;
}
int m(char*s)
{
int i=1,r=0;
if(*s=='-')
i=-1;
else
r=r*10+(*s-'0');
s++;
while(*s!='\0')
{
r=r*10+(*s-'0');
s++;
}
return i*r;
}
void A(char*s,int L)
{
char q[102],t[102];
int i,e,n=0;
if(s[n]=='-')
{
n++;
if(n==L)
return;
if(s[n]==X)
{
u-=1;
n++;
if(n==L)
return;
}
if(isdigit(s[n]))
{
e=g(s,n,L);
memset(q,'\0',sizeof(q));
for(i=0;i<e;i++)
q[i]=s[i+n];
n+=e;
if(s[n]!=X)
o+=m(q);
else
{
u-=m(q);
n++;
}
}
}
else
{
if(s[n]==X)
{
u+=1;
n++;
if(n==L)
return;
}
if(isdigit(s[n]))
{
e=g(s,n,L);
memset(t,'\0',sizeof(t));
for(i=0;i<e;i++)
t[i]=s[i+n];
n+=e;
if(s[n]!=X)
o-=m(t);
else
{
u+=m(t);
n++;
}
}
}
while(n<L)
{
if(s[n]=='-')
{
n++;
if(s[n]==X)
{
u-=1;
n++;
if(n==L)
break;
}
if(isdigit(s[n]))
{
e=g(s,n,L);
memset(t,'\0',sizeof(t));
for(i=0;i<e;i++)
t[i]=s[i+n];
n+=e;
if(s[n]!=X)
o+=m(t);
else
{
u-=m(t);
n++;
}
}
}
if(s[n]=='+')
{
n++;
if(s[n]==X)
{
u+=1;
n++;
if(n==L)
break;
}
if(isdigit(s[n]))
{
e=g(s,n,L);
memset(t,'\0',sizeof(t));
for(i=0;i<e;i++)
t[i]=s[i+n];
n+=e;
if(s[n]!=X)
o-=m(t);
else
{
u+=m(t);
n++;
}
}
}
}
}
void B(char*s,int L)
{
char q[102],t[102];
int i,e,n=0;
if(s[n]=='-')
{
n++;
if(n==L)
return;
if(s[n]==X)
{
u+=1;
n++;
if(n==L)
return;
}
if(isdigit(s[n]))
{
e=g(s,n,L);
memset(q,'\0',sizeof(q));
for(i=0;i<e;i++)
q[i]=s[i+n];
n+=e;
if(s[n]!=X)
o-=m(q);
else
{
u+=m(q);
n++;
}
}
}
else
{
if(s[n]==X)
{
u-=1;
n++;
if(n==L)
return;
}
if(isdigit(s[n]))
{
e=g(s,n,L);
memset(t,'\0',sizeof(t));
for(i=0;i<e;i++)
t[i]=s[i+n];
n+=e;
if(s[n]!=X)
o+=m(t);
else
{
u-=m(t);
n++;
}
}
}
while(n<L)
{
if(s[n]=='-')
{
n++;
if(s[n]==X)
{
u-=1;
n++;
if(n==L)
break;
}
if(isdigit(s[n]))
{
e=g(s,n,L);
memset(t,'\0',sizeof(t));
for(i=0;i<e;i++)
t[i]=s[i+n];
n+=e;
if(s[n]!=X)
o-=m(t);
else
{
u+=m(t);
n++;
}
}
}
if(s[n]=='+')
{
n++;
if(s[n]==X)
{
u-=1;
n++;
if(n==L)
break;
}
if(isdigit(s[n]))
{
e=g(s,n,L);
memset(t,'\0',sizeof(t));
for(i=0;i<e;i++)
t[i]=s[i+n];
n+=e;
if(s[n]!=X)
o+=m(t);
else
{
u-=m(t);
n++;
}
}
}
}
}
main()
{
freopen("computer.in","r",stdin);
freopen("computer.out","w",stdout);
bool a=1;
char c,r[100],l[100];
float z;
int b=0,v=0;
cin>>c;
while(c!='=')
{
if(a&&islower(c))
{
X=c;
a=0;
}
l[b]=c;
b++;
cin>>c;
}
cin>>c;
while (!cin.eof())
{
if(a&&islower(c))
{
X=c;
a=0;
}
r[v]=c;
v++;
cin>>c;
}
A(l,b);
B(r,v);
z=o/u;
if(z>-0.0005&&z<=0)
z=0;
cout<<X<<"="<<setiosflags(ios::fixed)<<setprecision(3)<<z;
}