# Thread: Printing number patterns - need help

1. ## Printing number patterns - need help

Hello guys,
I need help writing the following program using loops.

The program asks the user to print non-negative Integer number up to 9 digits in length and print it on Screen like the photo illustrated above.
It should look like in the picture (as for the direction), but the shape and size can improvise. In addition the digits height should be between 15 to 50 chars.
If the user doesn’t input good number (more than 9 digits, a negative one or not integer) it will ask him again until he will…

Thanks!!

2. No worries - What have you done so far?

3. Actually i just start learning c and Im very newbie in it. I hope some could post simple working solution, so I could learm from it..

4. I see, I didnt know, sorry...
You may close/delete the thread.

5. Is printing the digits sideways just to make the project more tedious than it already is?

6. Maybe this may inspire you with an idea on how you might begin. The "font" isn't usable for your program -- it's too small for a start but you might be able to trick it. How might you go about creating a "font"? Your idea probably won't look much like the code below (and that's OK), but maybe the #defines at least might give you a hint.

How might I have ended up with the code below? From the comment can you work out how to print a digit (for example the digit '5')? After that, can you work out how to print the digit sideways (hint: look up row-major on Wikipedia)?

Code:
```#define FONT_W      6
#define FONT_H      6
#define GLYPH_SZ    (FONT_W * FONT_H)

/* Font data. Glyphs row-major; digits 0 to 9 sequentially (i.e. digit 1
* starts at index GLYPH_SZ; digitnidx = n * GLYPH_SZ where 0 <= n <= 9).
*/
static unsigned char font[] = {
0,1,1,1,1,0,1,1,0,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,1,1,0,  /* Digit 0 */
0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,  /* Digit 1 */
0,0,1,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,
0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,0,
0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,0,
1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,0,
0,0,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,0,
1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,
0,1,1,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,0,
0,1,1,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,1,1,1,0,0   /* Digit 9 */
};```

7. I forgot to mention that the code above uses a 1-dimensional array because I was hoping it might trigger you to think about how array addressing/indexing works. The following is equally valid and makes accessing the array "easier".

Code:
```static unsigned char font[10][GLYPH_SZ] = {
{ 0,1,1,1,1,0,1,1,0,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0,0,0,1,1,0,1,1,1,1,0 },
{ 0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,1,1,0 },
{ 0,0,1,1,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,1,1,1 },
{ 0,1,1,1,1,0,1,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,0,1,0,1,1,1,1,0 },
{ 0,0,0,1,0,0,0,0,1,1,0,0,0,1,0,1,0,0,1,1,1,1,1,1,0,0,0,1,0,0,0,0,1,1,1,0 },
{ 1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,0 },
{ 0,0,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,0 },
{ 1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0 },
{ 0,1,1,1,1,0,1,0,0,0,0,1,0,1,1,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,0 },
{ 0,1,1,1,1,0,1,0,0,0,0,1,1,0,0,0,0,1,0,1,1,1,1,1,0,0,0,0,1,0,0,1,1,1,0,0 }
};```
I suppose you could also have a 3-dimensional array, although I personally wouldn't.

8. Hello guys,
thanks for the help.
in the end I went forward using arrays and switch-case loops.
after getting the number, I stripped it and reversed it. than on each digit I put switch case loop, witch should print the correspond function.
I need some help to call the function to print in the case ( I just don't know how...)
in addition i believe I Have lots of other rookie mistakes - appreciate the understanding and would like for any advice's, or better solution's....

Code:
```#include <stdio.h>
#include <conio.h>

void zero (char array [7][17]);
void zero (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void one (char array [7][17]);
void one (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void two (char array [7][17]);
void two (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void three (char array [7][17]);
void three (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void four (char array [7][17]);
void four (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ',' ',' ',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void five (char array [7][17]);
void five (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ','0','0'},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void six (char array [7][17]);
void six (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ',' ',' '},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void seven (char array [7][17]);
void seven (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void eight (char array [7][17]);
void eight (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void nine (char array [7][17]);
void nine (char array [7][17])
{
int i, j;
char matrix[7][17]= {
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

for(i = 0; i < 7; ++i)
{
for(j = 0; j < 17; ++j)
printf("%c", matrix[i][j]);
printf("\n");
}
}

void main(void)
{

long int n,rev,n1;
int d;
double f;
char ch;

flushall();
printf("Enter any whole Integer Number, no bigger than 9 digits\n");
scanf_s("%lf",&f);
n=f;
while ((f!=n) || (n>99999999) || (n<0))
{
printf("The number you entered is not an whole Integer Number, Or bigger than 9 digits, TRY AGAIN\n");
}

n1=n;
rev=0;
while (n!=0)
{
d= n%10;
rev=rev*10+d;
n/=10;
}
while(rev!=0)
{
d=rev%10;
switch(d)
{
case 0:
??????????????
break;
case 1:
??????????????
break;
case 2:
??????????????
break;
case 3:
??????????????
break;
case 4:
??????????????
break;
case 5:
??????????????
break;
case 6:
??????????????
break;
case 7:
??????????????
break;
case 8:
??????????????
break;
case 9:
??????????????
break;
}
rev=rev/10;
}

}```

9. The thing I noted was you have made your arrays very specific. Whereas for not very much more work you could make them a great deal more general and that would allow you to experiment with the look of the output. So instead of being restricted to '0' characters you could make a choice of character simply by changing ONE variable in the code. Just a thought.

10. Don't use magic numbers, #define some constants.

What's so hard about calling a funciton? printf is a funciton, you call it just fine. All you need to do is use the function name with some parentheses and any parameters: function_name(param1, param2); But maybe it's difficult since your functions are not so well designed.

Your zero..nine functions are all basically identical, except for the local variable matrix. Whenever you have repeated code, consider making it a single function that you call from several places. Also, each of those functions takes a parameter, but you never use that parameter. Instead, consider defining those matrices outside your functions, and have a print_digit function you call, passing a different digit matrix.
Code:
```#define DIGIT_WIDTH 17  // yes, this is slightly confusing, b/c the numbers are printed sideways
#define DIGIT_HEIGHT 7

char digit_0[DIGIT_HEIGHT][DIGIT_WIDTH] = {
};

void print_digit(char digit[DIGIT_HEIGHT][DIGIT_WIDTH])
{
// similar to the contents of any of your zero..nine functions
for (i = 0; i < DIGIT_HEIGHT; i++
...
}
...
d = rev % 10;
switch(d) {
case 0:
print_digit(digit_0);
break;
case 1:
print_digit(digit_1);
break;
...```
Since the digits 0..9 map nicely to array indices, you could even do one better, and make an array of digits, i.e. a 3-d array:
Code:
```#define NUM_DIGITS 10
#define DIGIT_WIDTH 17  // yes, this is slightly confusing, b/c the numbers are printed sideways
#define DIGIT_HEIGHT 7

char digits[NUM_DIGITS][DIGIT_HEIGHT][DIGIT_WIDTH] = {
{
{' ', ' ', '0', '0', '0'...},
// all the ' ' and '0' for digit 0
},
{  // all the ' ' and '0' for digit 1
},
{  // all the ' ' and '0' for digit 2
},
...
};

void print_digit(char digit[DIGIT_HEIGHT][DIGIT_WIDTH])
{
// similar to the contents of any of your zero..nine functions
for (i = 0; i < DIGIT_HEIGHT; i++
...
}
...
d = rev % 10;
print_digit(digits[d]);  // no switch statement needed, just the loop for processing digits```

11. Hi anduril462,
thanks for the help. unfortunately I got confused...
could your please if it not so hard post the entire fixed code - so I could check it out from the beginning to the end...

12. Originally Posted by haim1404
Hi anduril462,
thanks for the help. unfortunately I got confused...
could your please if it not so hard post the entire fixed code - so I could check it out from the beginning to the end...
Sorry, can't do that. It's against our homework policy. I gave you some pretty big hints though, and you only spent at most 11 minutes thinking about it and trying. Spend some more time, and actually try to implement it. Post back with actual code. One more hint, the last solution I gave, with the 3-d array, does not need any switch statement (I've added a comment to the code to this effect).

13. Originally Posted by anduril462
Sorry, can't do that. It's against our homework policy. I gave you some pretty big hints though, and you only spent at most 11 minutes thinking about it and trying. Spend some more time, and actually try to implement it. Post back with actual code. One more hint, the last solution I gave, with the 3-d array, does not need any switch statement (I've added a comment to the code to this effect).
I see...

did you meant something like this?
If so, it doesn't work for me...

Code:
```#include <stdio.h>
#include <conio.h>
#define DIGIT_WIDTH 17
#define DIGIT_HEIGHT 7

char digit_0[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

char digit_1[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
};

char digit_2[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
};

char digit_3[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

char digit_4[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ',' ',' ',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

char digit_5[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ','0','0'},
};
char digit_6[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0',' ',' ',' ',' ',' ',' ',' '},
};

char digit_7[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

char digit_8[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

char digit_9[DIGIT_HEIGHT][DIGIT_WIDTH] = {
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ','0','0',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
};

void print_digit(char digit[DIGIT_HEIGHT][DIGIT_WIDTH]);
void print_digit(char digit[DIGIT_HEIGHT][DIGIT_WIDTH])
{
int i, j;
for(i = 0; i < DIGIT_HEIGHT; ++i)
{
for(j = 0; j < DIGIT_WIDTH; ++j)
printf("%c",print_digit [i][j]);
printf("\n\n");
}
}

void main(void)
{

long int n,rev,n1;
int d;
double f;
char ch;

flushall();
printf("Enter any whole Integer Number, no bigger than 9 digits\n");
scanf_s("%lf",&f);
n=f;
while ((f!=n) || (n>99999999) || (n<0))
{
printf("The number you entered is not an whole Integer Number, Or bigger than 9 digits, TRY AGAIN\n");
}

n1=n;
rev=0;
while (n!=0)
{
d= n%10;
rev=rev*10+d;
n/=10;
}
while(rev!=0)
{
d=rev%10;
switch(d)
{
case 0:
print_digit(digit_0);
break;
case 1:
print_digit(digit_1);
break;
case 2:
print_digit(digit_2);
break;
case 3:
print_digit(digit_3);
break;
case 4:
print_digit(digit_4);
break;
case 5:
print_digit(digit_5);
break;
case 6:
print_digit(digit_6);
break;
case 7:
print_digit(digit_7);
break;
case 8:
print_digit(digit_8);
break;
case 9:
print_digit(digit_9);
break;
}
rev=rev/10;
}

}```

14. Yes. That was exactly what I meant. That was my first suggestion, which is pretty good. But my second suggestion was even better. It requires no switch statement. You would do somethin like
Code:
```#define DIGIT_WIDTH 17
#define DIGIT_HEIGHT 7
#define NUM_DIGITS 10

char digits[NUM_DIGITS][DIGIT_HEIGHT][DIGIT_WIDTH] = {
{  // digit 0
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
},
{  // digit 1
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
},
...
};
...
while(rev!=0)
{
d=rev%10;
// no need for a switch
print_digit(digits[d]);
rev=rev/10;
}```

Popular pages Recent additions