#include #include #include #define LINELENGTH 8 int str2ints(char * string, int ** ints, int * intslength) { int slength; int * tempints; int tempintslength; slength = strlen(string); tempintslength = 4; if (string[0] == 'e') { *ints = NULL; *intslength = 0; return (0); } tempints = (int*) malloc(4 * sizeof(*tempints)); tempints[0] = string[0]-48; tempints[1] = string[1]-48; tempints[2] = string[3]-48; tempints[3] = string[4]-48; *ints = tempints; *intslength = tempintslength; return (0); } int main() { char line[LINELENGTH]; int * ints; int intslength; int i; int j; char digi[7][30]; char buffer[30]; int x; while(!feof(stdin)) { for (j = 0; j != 7; j++) for (i = 0; i != 30; i++) { if (i == 29) digi[j][i] = 0; else digi[j][i] = ' '; } fgets(line,LINELENGTH,stdin); str2ints(line,&ints,&intslength); if ((intslength == 0)) { printf("end\n"); return(0); } for (i = 0; i != 4; i++) { switch (i) { case 0 : x = 0; break; case 1 : x = 7; break; case 2 : x = 17; break; case 3 : x = 24; break; } switch (ints[i]) { case 0 : strncpy(digi[0]+x,"+---+",5); strncpy(digi[1]+x,"| |",5); strncpy(digi[2]+x,"| |",5); strncpy(digi[3]+x,"+ +",5); strncpy(digi[4]+x,"| |",5); strncpy(digi[5]+x,"| |",5); strncpy(digi[6]+x,"+---+",5); break; case 1 : strncpy(digi[0]+x," +",5); strncpy(digi[1]+x," |",5); strncpy(digi[2]+x," |",5); strncpy(digi[3]+x," +",5); strncpy(digi[4]+x," |",5); strncpy(digi[5]+x," |",5); strncpy(digi[6]+x," +",5); break; case 2 : strncpy(digi[0]+x,"+---+",5); strncpy(digi[1]+x," |",5); strncpy(digi[2]+x," |",5); strncpy(digi[3]+x,"+---+",5); strncpy(digi[4]+x,"| ",5); strncpy(digi[5]+x,"| ",5); strncpy(digi[6]+x,"+---+",5); break; case 3 : strncpy(digi[0]+x,"+---+",5); strncpy(digi[1]+x," |",5); strncpy(digi[2]+x," |",5); strncpy(digi[3]+x,"+---+",5); strncpy(digi[4]+x," |",5); strncpy(digi[5]+x," |",5); strncpy(digi[6]+x,"+---+",5); break; case 4 : strncpy(digi[0]+x,"+ +",5); strncpy(digi[1]+x,"| |",5); strncpy(digi[2]+x,"| |",5); strncpy(digi[3]+x,"+---+",5); strncpy(digi[4]+x," |",5); strncpy(digi[5]+x," |",5); strncpy(digi[6]+x," +",5); break; case 5 : strncpy(digi[0]+x,"+---+",5); strncpy(digi[1]+x,"| ",5); strncpy(digi[2]+x,"| ",5); strncpy(digi[3]+x,"+---+",5); strncpy(digi[4]+x," |",5); strncpy(digi[5]+x," |",5); strncpy(digi[6]+x,"+---+",5); break; case 6 : strncpy(digi[0]+x,"+---+",5); strncpy(digi[1]+x,"| ",5); strncpy(digi[2]+x,"| ",5); strncpy(digi[3]+x,"+---+",5); strncpy(digi[4]+x,"| |",5); strncpy(digi[5]+x,"| |",5); strncpy(digi[6]+x,"+---+",5); break; case 7 : strncpy(digi[0]+x,"+---+",5); strncpy(digi[1]+x," |",5); strncpy(digi[2]+x," |",5); strncpy(digi[3]+x," +",5); strncpy(digi[4]+x," |",5); strncpy(digi[5]+x," |",5); strncpy(digi[6]+x," +",5); break; case 8 : strncpy(digi[0]+x,"+---+",5); strncpy(digi[1]+x,"| |",5); strncpy(digi[2]+x,"| |",5); strncpy(digi[3]+x,"+---+",5); strncpy(digi[4]+x,"| |",5); strncpy(digi[5]+x,"| |",5); strncpy(digi[6]+x,"+---+",5); break; case 9 : strncpy(digi[0]+x,"+---+",5); strncpy(digi[1]+x,"| |",5); strncpy(digi[2]+x,"| |",5); strncpy(digi[3]+x,"+---+",5); strncpy(digi[4]+x," |",5); strncpy(digi[5]+x," |",5); strncpy(digi[6]+x,"+---+",5); break; } } x=14; strncpy(digi[0]+x," ",1); strncpy(digi[1]+x," ",1); strncpy(digi[2]+x,"o",1); strncpy(digi[3]+x," ",1); strncpy(digi[4]+x,"o",1); strncpy(digi[5]+x," ",1); strncpy(digi[6]+x," ",1); for (j = 0; j != 7; j++) { strcpy(buffer,digi[j]); printf("%s\n",buffer); } printf("\n"); printf("\n"); } return (0); }