自动转换机简单版

#include<stdio.h>
#define N 100
void getch(a,n,c,d,g,f,h);
void printfc(p,q,n);
main()
{
char a[N];
char c[N],d[N],g[N],f[N],h[N];
int m, n,i,j;
printf("请你输入字符串在X[i]数组中:");
gets(a);
n=strlen(a);
for(i=0;i<2*n;i++)
{
f[i]=h[i]=c[i]=d[i]=g[i]='0';
}
getch(a,n,c,d,g,f,h);
printfc(f,h,n);
}
void getch(char a[],int n,char c[],char d[],char g[],char f[],char h[])
{
int i,i1=0,i2=0;
for(i=0;i<n;i++)
{
if(a[i]=='*')
{
d[i-1]=a[i-1];

}
}
for(i=0;i<n;i++)
{
if(a[i]=='|')
{
c[i]=a[i+1];
}
}

for(i=0;i<n;i++)
{
if(a[i]=='|')
{
i=i+1;
}
else if(a[i+1]=='*')
{
i=i+1;
}
else if(a[i]=='*')
{

}
else
{
g[i]=a[i];
}
}

for(i=0;i<n;i++)
{
if(g[i]!='0' && d[i+1]=='0')
{
f[i1]=g[i];
i1=i1+1;
}

else if(g[i]!='0' && c[i]=='0' && d[i+1]!='0')
{
f[i1]=g[i1];
i1=i1+1;
f[i1]='&';
f[i1+1]=d[i+1];
f[i1+2]='&';
i1=i1+3;
}
else if(g[i]=='0' && c[i]=='0' && d[i+1]!='0')
{

f[i1]='&';
f[i1+1]=d[i+1];
f[i1+2]='&';
i1=i1+3;
}
else if(g[i]=='0' && c[i]=='0' && d[i1]!='0')
{

f[i1]='&';
f[i1+1]=d[i];
f[i1+2]='&';
i1=i1+3;
}
else if(c[i]!='0' && d[i+1]=='0')
{
if(d[i-2]!='0' && c[i-3]=='0')
{
i2=i1-3;
h[i2]=c[i];
i2=i2+1;
}
else
{
i2=i1-1;
h[i2]=c[i];
i2=i2+1;
}

}
else if(c[i]!='0' && d[i+1]!='0')
{
if(c[i-1]=='0'&&c[i-3]=='0')
{
i2=i1;
i2=i2-3;
h[i2]='&';
h[i2+1]=d[i+1];
h[i2+2]='&';
i2=i2+1;
}
else
{
i2=i1;
i2=i2-1;
h[i2]='&';
h[i2+1]=d[i+1];
h[i2+2]='&';
i2=i2+1;
}

}

else
{

}
}
}

void printfc(char p[],char q[],int n)
{
int i=0,i1=0,s=0,i3=0,k;
int x[N];
for(i=0;i<2*n;i++)
{
x[i]=i;
}
i=0;
while(p[i]!='0')
{
if(q[i]=='0')
{

if(p[i]=='&' && p[i+2]=='&')
{
if(s!=0)
{
k=k+1;
printf("f(%d,%c)=%d ",x[i],p[i],x[k]);
printf("f(%d,%c)=%d ",x[k],p[i+1],x[k]);
i=i+1;
i1=i1+1;
k=k+1;
s=s-1;
}
else
{
printf("f(%d,%c)=%d ",x[i1],p[i],x[i1+1]);
printf("f(%d,%c)=%d ",x[i1+1],p[i+1],x[i1+1]);
i=i+1;
i1=i1+1;
}

}
else
{
if(s!=0)
{

printf("f(%d,%c)=%d ",x[i],p[i],x[k]);
k=k+1;
s=s-1;
}
else
{
printf("f(%d,%c)=%d ",x[i1],p[i],x[i1+1]);
i1=i1+1;
}
}

}
else
{

i3=i;
i1=i;
while(q[i3]!='0')
{
if(q[i3]=='&' && q[i3+2]=='&')
{
printf("f(%d,%c)=%d ",x[i-1],q[i3],x[i1+1]);
printf("f(%d,%c)=%d ",x[i1+1],q[i3+1],x[i1+1]);
q[i3]='0';
q[i3+1]='0';
i3=i3+2;
i1=i1+1;

}
else
{
printf("f(%d,%c)=%d ",x[i-1],q[i3],x[i1+1]);

i1=i1+1;

if(q[i3]=='&')
{
k=i1;
}
else
{k=i1+1;}
q[i3]='0';
i3=i3+1;
s=s+1;
}
}
i=i-1;
}
i=i+1;
}
}

原文地址:https://www.cnblogs.com/qq2647409627/p/6131202.html