--a
++a
--b
++b
a+b
a-b
a--+b
a++-b
a+--b
a--+b
a++-++b
a++---b
a--+++b
a--+--b
a+++--b
a + b
b - z
a+b--+c++
c+f--+--a
f-- + c-- + d-++e
b++---c+d-c+b
z+d+c++-++b-a
++b-++c+--e-b+f++
--a-++b+c+a-c++
d++-c++-d++-c+d++
b-a-++b
#include<stdio.h>
#include<string.h>
#include<ctype.h>
main()
{
int num[200],nnum[200],count,d,value,i,j,L;
char a[200],b[30],m[200],chara[100];
while(gets(m))
{
count=d=value=0;
L=strlen(m);
memset(nnum,0,sizeof(nnum));
memset(num,0,sizeof(num));
memset(b,0,sizeof(b));
printf("Expression: %s\n",m);
for(i=0;i<L;i++)
{
if(m[i]!=' ')
a[count++]=m[i];
}
a[count]='\0';
L=strlen(a);
count=0;
for(i=0;i<L;i++)
{
if(isalpha(a[i]))
{
b[count]=a[i];
num[count]=a[i]-'a'+1;
nnum[count++]=a[i]-'a'+1;
if(i-2>=0&&a[i-2]=='+'&&a[i-1]=='+')
{
num[count-1]++;
nnum[count-1]++;
}
if(i+2<L&&a[i+1]=='+'&&a[i+2]=='+')
{
nnum[count-1]++;
i+=2;
}
if(i-2>=0&&a[i-2]=='-'&&a[i-1]=='-')
{
num[count-1]--;
nnum[count-1]--;
}
if(i+2<L&&a[i+1]=='-'&&a[i+2]=='-')
{
nnum[count-1]--;
i+=2;
}
}
if(a[i]=='+')
{
if(isalpha(a[i-1])&&isalpha(a[i+1]))
chara[d++]='+';
else if(isalpha(a[i-1])&&a[i+1]=='-'&&a[i+2]=='-')
chara[d++]='+';
else if(a[i-2]=='-'&&a[i-1]=='-'&&isalpha(a[i+1]))
chara[d++]='+';
else if(a[i-2]=='-'&&a[i+1]=='-'&&a[i+1]=='+'&&a[i+2]=='+')
chara[d++]='+';
else if(a[i-2]=='-'&&a[i+1]=='-'&&a[i+1]=='-'&&a[i+2]=='-')
chara[d++]='+';
else if(a[i-2]=='+'&&a[i+1]=='+'&&a[i+1]=='-'&&a[i+2]=='-')
chara[d++]='+';
}
if(a[i]=='-')
{
if(isalpha(a[i-1])&&isalpha(a[i+1]))
chara[d++]='-';
else if(isalpha(a[i-1])&&a[i+1]=='+'&&a[i+2]=='+')
chara[d++]='-';
else if(a[i-2]=='+'&&a[i-1]=='+'&&isalpha(a[i+1]))
chara[d++]='-';
else if(a[i-2]=='+'&&a[i+1]=='+'&&a[i+1]=='-'&&a[i+2]=='-')
chara[d++]='-';
else if(a[i-2]=='+'&&a[i+1]=='+'&&a[i+1]=='+'&&a[i+2]=='+')
chara[d++]='-';
else if(a[i-2]=='-'&&a[i+1]=='-'&&a[i+1]=='+'&&a[i+2]=='+')
chara[d++]='-';
}
}
chara[d]='\0';
value=+num[0];
for(i=0;i<d;i++)
{
if(chara[i]=='+')
value+=num[i+1];
else value-=num[i+1];
}
printf(" value = %d\n",value);
for(i=0;i<26;i++)
for(j=0;j<count;j++)
if(b[j]=='a'+i)
printf(" %c = %d\n",b[j],nnum[j]);
}
return 0;
}
uva327
最新推荐文章于 2019-04-29 13:34:38 发布