159 - Word Crosses PresentationE
Posted: Tue Feb 03, 2015 11:06 pm
Help please.......
Code: Select all
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
//freopen("out.txt", "w", stdout);
char p11[15], p12[15], p21[15], p22[15];
int p11l, p12l, p21l, p22l, v1, v2, p11c, p12c, p21c, p22c;
int i, j, k, m, n, w;
bool c1, c2, f = false;
while(scanf("%s", p11) == 1){
if(p11[0] == '#' && p11[1] == '\0')break;
scanf("%s %s %s", p12, p21, p22);
p11l = strlen(p11);
p12l = strlen(p12);
p21l = strlen(p21);
p22l = strlen(p22);
c1 = false;
c2 = false;
for(i = 0; i < p11l; i++){
for(j = 0; j < p12l; j++){
if(p11[i] == p12[j]){
c1 = true;
p11c = i+1;
p12c = j+1;
break;
}
}
if(c1)break;
}
for(i = 0; i < p21l; i++){
for(j = 0; j < p22l; j++){
if(p21[i] == p22[j]){
c2 = true;
p21c = i+1;
p22c = j+1;
break;
}
}
if(c2)break;
}
if(f)putchar('\n');
f = true;
if(c1 && c2){
if(p12c >= p22c){
m = 0;
n = 0;
v1 = p12c - p22c;
for(i = 0; i < v1; i++){
for(j = 1; j < p11c; j++)putchar(' ');
printf("%c\n", p12[m++]);
}
w = (p11l - p11c) + 3 + (p21c - 1);
for(; i < p12l; i++){
if(i == p12c-1){
printf("%s %s", p11, p21);
m++;
n++;
}
else{
for(j = 1; j < p11c; j++)putchar(' ');
printf("%c", p12[m++]);
for(j = 0; j < w; j++)putchar(' ');
if(n < p22l)printf("%c", p22[n++]);
else putchar(' ');
}
printf("\n");
}
if(p22l+v1 > p12l){
v2 = p22l + v1 - p12l;
w = p11l + 3 + (p21c-1);
for(i = 0; i < v2; i++){
for(j = 0; j < w; j++)putchar(' ');
printf("%c\n", p22[n++]);
}
}
}
else{
m = 0;
n = 0;
v1 = p22c - p12c;
w = p11l + 3 + (p21c-1);
for(i = 0; i < v1; i++){
for(j = 0; j < w; j++)putchar(' ');
printf("%c\n", p22[n++]);
}
w = (p11l - p11c) + 3 + (p21c - 1);
for(; i < p22l; i++){
if(i == p22c-1){
printf("%s %s", p11, p21);
m++;
n++;
}
else{
for(j = 1; j < p11c; j++)putchar(' ');
if(m < p12l)printf("%c", p12[m++]);
else putchar(' ');
for(j = 0; j < w; j++)putchar(' ');
printf("%c", p22[n++]);
}
printf("\n");
}
if(v1+p12l > p22l){
v2 = v1 + p12l - p22l;
for(i = 0; i < v2; i++){
for(j = 1; j < p11c; j++)putchar(' ');
putchar(p12[m++]);
printf("\n");
}
}
}
}
else printf("Unable to make two crosses\n");
}
return 0;
}