#include #include #include struct digit { bool d1, d2, d3, d4, d5, d6, d7; }; char output[7][30]; void reset() { for (int i = 0; i < 7; i++) for (int j = 0; j < 30; j++) { output[i][j] = ' '; if (j == 29) output[i][j] = 0; } output[2][14] = 'o'; output[4][14] = 'o'; } void horiz(int pos, int top) { output[top][pos+1] = '-'; output[top][pos+2] = '-'; output[top][pos+3] = '-'; } void vert(int pos, int top) { output[top][pos] = '|'; output[top+1][pos] = '|'; } void corner(int pos, int top) { output[top][pos] = '+'; } void intooutput(int pos, digit d) { if (d.d1) horiz(pos, 0); if (d.d2) vert(pos, 1); if (d.d3) vert(pos+4, 1); if (d.d4) horiz(pos, 3); if (d.d5) vert(pos, 4); if (d.d6) vert(pos+4, 4); if (d.d7) horiz(pos, 6); if (d.d1 || d.d2) corner(pos, 0); if (d.d1 || d.d3) corner(pos+4, 0); if (d.d4 || d.d2 || d.d5) corner(pos, 3); if (d.d4 || d.d3 || d.d6) corner(pos+4, 3); if (d.d7 || d.d5) corner(pos, 6); if (d.d7 || d.d6) corner(pos+4, 6); } digit decode(char c) { digit r; r.d1 = false; r.d2 = false; r.d3 = false; r.d4 = false; r.d5 = false; r.d6 = false; r.d7 = false; switch(c) { case '0': r.d1 = true; r.d2 = true; r.d3 = true; r.d5 = true; r.d6 = true; r.d7 = true; break; case '1': r.d3 = true; r.d6 = true; break; case '2': r.d1 = true; r.d3 = true; r.d4 = true; r.d5 = true; r.d7 = true; break; case '3': r.d1 = true; r.d3 = true; r.d4 = true; r.d6 = true; r.d7 = true; break; case '4': r.d2 = true; r.d3 = true; r.d4 = true; r.d6 = true; break; case '5': r.d1 = true; r.d2 = true; r.d4 = true; r.d6 = true; r.d7 = true; break; case '6': r.d1 = true; r.d2 = true; r.d4 = true; r.d5 = true; r.d6 = true; r.d7 = true; break; case '7': r.d1 = true; r.d3 = true; r.d6 = true; break; case '8': r.d1 = true; r.d2 = true; r.d3 = true; r.d4 = true; r.d5 = true; r.d6 = true; r.d7 = true; break; case '9': r.d1 = true; r.d2 = true; r.d3 = true; r.d4 = true; r.d6 = true; r.d7 = true; break; } return r; } void allout(const char *neco) { reset(); digit d = decode(neco[0]); intooutput(0, d); d = decode(neco[1]); intooutput(7, d); d = decode(neco[3]); intooutput(17, d); d = decode(neco[4]); intooutput(24, d); } void printout() { for (int line = 0; line < 7; line++) { printf("%s\n", output[line]); } } int main() { char r[10]; gets(r); while (strncmp(r, "end", 3) != 0) { allout(r); printout(); printf("\n\n"); gets(r); } printf("end\n"); return 0; }