#include char buf[8][30]; void doseg1(int x, int seg) { bool zv=true; int sx,sy,ex,ey; switch (seg) { case 1 : sx=0;sy=0; ex=0;ey=3; break; case 2 : sx=0;sy=3; ex=0;ey=6; break; case 6 : sx=4;sy=0; ex=4; ey=3; break; case 7 : sx=4;sy=3; ex=4; ey=6; break; case 3 : sx=0;sy=6; ex=4;ey=6; zv = false; break; case 4 : sx=0;sy=3; ex=4;ey=3; zv = false; break; case 5 : sx=0;sy=0; ex=0;ey=0; zv = false; break; } sx+=x; ex+=x; buf[sy][sx]='+'; buf[ey][ex]='+'; if (zv) { for (int i=0;i<2;i++) buf[sy+1+i][sx]='|'; } else { for (int i=0;i<3;i++) buf[sy][sx+1+i]='-'; } } void dodig(int x, int c) { #define doseg(c) doseg1(x,c); switch (c) { case 0 : doseg(1); doseg(2); doseg(3); doseg(5); doseg(6); doseg(7); break; case 1 : doseg(6); doseg(7); break; case 2 : doseg(2); doseg(3); doseg(4); doseg(5); doseg(6); break; case 3 : doseg(3); doseg(4); doseg(5); doseg(6); doseg(7); break; case 4 : doseg(1); doseg(4); doseg(6); doseg(7); break; case 5 : doseg(1); doseg(3); doseg(4); doseg(5); doseg(7); break; case 6 : doseg(1); doseg(2); doseg(3); doseg(4); doseg(5); doseg(7); break; case 7 : doseg(5); doseg(6); doseg(7); break; case 8 : doseg(1); doseg(2); doseg(3); doseg(4); doseg(5); doseg(6); doseg(7); break; case 9 : doseg(1); doseg(3); doseg(4); doseg(5); doseg(6); doseg(7); break; } } void makebuf(char* s) { for (int y=0;y<7;y++) for (int x=0;x<29;x++) buf[y][x]=' '; buf[2][14]='o'; buf[4][14]='o'; for (int i=0;i<5;i++) { int x=i*7; if (i==2) continue; if (i>2) x=(i-1)*7+3; int c=s[i]-'0'; dodig(x,c); } } int main() { while (true) { char s[22]; fgets(s,20,stdin); if (s[0]=='e') { printf("end\n"); return 0; } makebuf(s); for (int y=0;y<7;y++) { for (int x=0;x<29;x++) { putchar(buf[y][x]); } putchar('\n'); } putchar('\n'); putchar('\n'); } }