/* Problem 3--L-C Display Just a straightforward ASCII art problem. */ #include #include #include FILE *in, *out; int main (int argc, char **argv); void Print (int s, char *n); void PrintTopDigit (int s, int d); void PrintBottomDigit (int s, int d); void PrintMidDigit (int s, int d); void PrintMid1Digit (int s, int d); void PrintMid2Digit (int s, int d); int main (int argc, char **argv) { char n[10]; int s; in = fopen ("prob3.in","r"); out = fopen ("prob3.out","w"); while (fscanf (in,"%d %s",&s,n),s>0) Print (s,n); fclose (in); fclose (out); return EXIT_SUCCESS; } /* Print number n of size s */ void Print (int s, char *n) { int i, j; for (i=0; i < (int)strlen (n); i++) { PrintTopDigit (s,n[i]-'0'); fprintf (out,i<(int)strlen(n)-1?" ":"\n"); } for (j=0; j < s; j++) for (i=0; i < (int)strlen (n); i++) { PrintMid1Digit (s,n[i]-'0'); fprintf (out,i<(int)strlen(n)-1?" ":"\n"); } for (i=0; i < (int)strlen (n); i++) { PrintMidDigit (s,n[i]-'0'); fprintf (out,i<(int)strlen(n)-1?" ":"\n"); } for (j=0; j < s; j++) for (i=0; i < (int)strlen (n); i++) { PrintMid2Digit (s,n[i]-'0'); fprintf (out,i<(int)strlen(n)-1?" ":"\n"); } for (i=0; i < (int)strlen (n); i++) { PrintBottomDigit (s,n[i]-'0'); fprintf (out,i<(int)strlen(n)-1?" ":"\n"); } fprintf (out,"\n"); } /* These routines print specific portions of each digit */ void PrintTopDigit (int s, int d) { int i; switch (d) { case 6: case 7: case 8: case 9: case 0: case 5: case 3: case 2: fprintf (out," "); for (i=0; i < s; i++) fprintf (out,"-"); fprintf (out," "); break; case 4: case 1: for (i=0; i < s+2; i++) fprintf (out," "); break; } } void PrintBottomDigit (int s, int d) { int i; switch (d) { case 6: case 8: case 9: case 0: case 5: case 3: case 2: fprintf (out," "); for (i=0; i < s; i++) fprintf (out,"-"); fprintf (out," "); break; case 7: case 4: case 1: for (i=0; i < s+2; i++) fprintf (out," "); break; } } void PrintMidDigit (int s, int d) { int i; switch (d) { case 4: case 6: case 8: case 9: case 5: case 3: case 2: fprintf (out," "); for (i=0; i < s; i++) fprintf (out,"-"); fprintf (out," "); break; case 0: case 7: case 1: for (i=0; i < s+2; i++) fprintf (out," "); break; } } void PrintMid1Digit (int s, int d) { int i; switch (d) { case 4: case 8: case 9: case 0: fprintf (out,"|"); for (i=0; i < s; i++) fprintf (out," "); fprintf (out,"|"); break; case 6: case 5: fprintf (out,"|"); for (i=0; i < s+1; i++) fprintf (out," "); break; case 2: case 3: case 7: case 1: for (i=0; i < s+1; i++) fprintf (out," "); fprintf (out,"|"); break; } } void PrintMid2Digit (int s, int d) { int i; switch (d) { case 6: case 8: case 0: fprintf (out,"|"); for (i=0; i < s; i++) fprintf (out," "); fprintf (out,"|"); break; case 2: fprintf (out,"|"); for (i=0; i < s+1; i++) fprintf (out," "); break; case 9: case 4: case 5: case 3: case 7: case 1: for (i=0; i < s+1; i++) fprintf (out," "); fprintf (out,"|"); break; } }