Pagini recente » Cod sursa (job #2751028) | Cod sursa (job #126692) | Cod sursa (job #1760251) | Cod sursa (job #1203675) | Cod sursa (job #359253)
Cod sursa(job #359253)
#include<stdio.h>
#include<string.h>
#define Nmx 51
int n;
char rad,in[Nmx],pre[Nmx],inf[Nmx],st[Nmx],dr[Nmx];
int nr;
void citire()
{
fgets(pre,Nmx,stdin);
rad=pre[0];
while(pre[strlen(pre)-1]=='\n')
pre[strlen(pre)-1]=0;
fgets(in,Nmx,stdin);
while(in[strlen(in)-1]=='\n')
in[strlen(in)-1]=0;
}
void solve(int r,int k,char In[],char Pre[])
{
int j=0,i=nr;
for(;j<strlen(in);++j)
if(In[j]==r)
break;
if(j!=strlen(in))
inf[i]=r;
if(j!=0) st[i]=Pre[k+1];
if(j!=strlen(In)-1) dr[i]=Pre[k+j+1];
char P[Nmx];
memset(P,0,sizeof(P)); strncpy(P,In,j);
if(st[i])
{++nr;solve(st[i],k+1,P,Pre);}
if(dr[i])
{++nr;solve(dr[i],j+1,In+j+1,Pre);}
}
void afis()
{
for(int i=0;i<strlen(in);++i)
{printf("%c ",inf[i]);
if(st[i]==0) printf("* ");
else printf("%c",st[i]);
if(dr[i]==0) printf("* \n");
else printf("%c \n",dr[i]);
}
}
int main()
{
freopen("arbore.in","r",stdin);
freopen("arbore.out","w",stdout);
citire();
solve(rad,0,in,pre);
afis();
return 0;
}