Code: Select all
#include<stdio.h>
#include<string.h>
int check(char *,char *,int *,int *);
void print(char *,int,char *,int,char *,int,char *,int);
int main(void)
{
register int i,j;
int p1,p2,p3,p4;
char w1[12],w2[12],w3[12],w4[12];
while(1){
if(scanf("%s %s %s %s",w1,w2,w3,w4)!=4)
break;
if(w1[0]=='#')
break;
if(check(w1,w2,&p1,&p2)&&check(w3,w4,&p3,&p4)){
print(w1,p1,w2,p2,w3,p3,w4,p4);
}
else
printf("Unable to make two crossesn");
printf("n");
}
return 0;
}
int check(char *str1,char *str2,int *pos1,int *pos2)
{
register int i,j;
int found;
for(i=found=0;str1[i]&&found==0;i++){
for(j=0;str2[j]&&found==0;j++){
if(str1[i]==str2[j])
found=1;
}
}
if(found==1){
*pos1=i-1;
*pos2=j-1;
}
return found;
}
void print(char *w1,int p1,char *w2,int p2,char *w3,int p3,char *w4,int p4)
{
register int i,j;
int l1,l2,l3,l4,hei,wid;
char mat[32][32];
for(i=0;i<32;i++){
for(j=0;j<31;j++)
mat[i][j]=' ';
mat[i][j]=NULL;
}
l1=strlen(w1);
l2=strlen(w2);
l3=strlen(w3);
l4=strlen(w4);
if(p2>p4){
for(i=0;i<l1;i++)
mat[p2][i]=w1[i];
for(i=0;i<l2;i++)
mat[i][p1]=w2[i];
for(i=0;i<l3;i++)
mat[p2][l1+3+i]=w3[i];
for(i=0;i<l4;i++)
mat[p2-p4+i][l1+3+p3]=w4[i];
hei=p2-p4+l4-1;
wid=l1+l3+3;
}
else{
for(i=0;i<l3;i++)
mat[p4][l1+3+i]=w3[i];
for(i=0;i<l4;i++)
mat[i][l1+3+p3]=w4[i];
for(i=0;i<l1;i++)
mat[p4][i]=w1[i];
for(i=0;i<l2;i++)
mat[p4-p2+i][p1]=w2[i];
hei=p4-p2+l2-1;
wid=l1+l3+3;
}
for(i=0;i<=hei;i++){
for(j=wid;j>=0;j--){
if(mat[i][j]!=' ')
break;
}
mat[i][j+1]=NULL;
printf("%sn",mat[i]);
}
}