|
|||||
A friend of yours has just bought a new computer. Before this, the most powerful machine he ever used was a pocket calculator. He is a little disappointed because he liked the LCD display of his calculator more than the screen on his new computer! To make him happy, write a program that prints numbers in LCD display style.
Input
The input file contains several lines, one for each number to be displayed. Each line contains integers s and n, where n is the number to be displayed ( 0n99, 999, 999) and s is the size in which it shall be displayed ( 1s10). The input will be terminated by a line containing two zeros, which should not be processed.
Output
Print the numbers specified in the input file in an LCD display-style using s ``-'' signs for the horizontal segments and s ``|'' signs for the vertical ones. Each digit occupies exactly s + 2 columns and 2s + 3 rows. Be sure to fill all the white space occupied by the digits with blanks, including the last digit. There must be exactly one column of blanks between two digits.
Output a blank line after each number. You will find an example of each digit in the sample output below.
Sample Input
2 12345
3 67890
0 0
Sample Output
-- -- --
| | | | | |
| | | | | |
-- -- -- --
| | | | |
| | | | |
-- -- --
--- --- --- --- ---
| | | | | | | |
| | | | | | | |
| | | | | | | |
--- --- ---
| | | | | | | |
| | | | | | | |
| | | | | | | |
--- --- --- ---
#include < iostream >
using namespace std;
int display[ 10 ][ 7 ];
void init ()
{
display[ 0 ][ 0 ] = display[ 0 ][ 1 ] = display[ 0 ][ 2 ] = display[ 0 ][ 4 ] = display[ 0 ][ 5 ] = display[ 0 ][ 6 ] = 1 ;
display[ 1 ][ 2 ] = display[ 1 ][ 5 ] = 1 ;
display[ 2 ][ 0 ] = display[ 2 ][ 2 ] = display[ 2 ][ 3 ] = display[ 2 ][ 4 ] = display[ 2 ][ 6 ] = 1 ;
display[ 3 ][ 0 ] = display[ 3 ][ 2 ] = display[ 3 ][ 3 ] = display[ 3 ][ 5 ] = display[ 3 ][ 6 ] = 1 ;
display[ 4 ][ 1 ] = display[ 4 ][ 2 ] = display[ 4 ][ 3 ] = display[ 4 ][ 5 ] = 1 ;
display[ 5 ][ 0 ] = display[ 5 ][ 1 ] = display[ 5 ][ 3 ] = display[ 5 ][ 5 ] = display[ 5 ][ 6 ] = 1 ;
display[ 6 ][ 0 ] = display[ 6 ][ 1 ] = display[ 6 ][ 3 ] = display[ 6 ][ 4 ] = display[ 6 ][ 5 ] = display[ 6 ][ 6 ] = 1 ;
display[ 7 ][ 0 ] = display[ 7 ][ 2 ] = display[ 7 ][ 5 ] = 1 ;
display[ 8 ][ 0 ] = display[ 8 ][ 1 ] = display[ 8 ][ 2 ] = display[ 8 ][ 3 ] = display[ 8 ][ 4 ] = display[ 8 ][ 5 ] = display[ 8 ][ 6 ] = 1 ;
display[ 9 ][ 0 ] = display[ 9 ][ 1 ] = display[ 9 ][ 2 ] = display[ 9 ][ 3 ] = display[ 9 ][ 5 ] = display[ 9 ][ 6 ] = 1 ;
}
int fun( int row)
{
if (row == 1 )
return 0 ;
if (row == 2 )
return 1 ;
if (row == 3 )
return 3 ;
if (row == 4 )
return 4 ;
if (row == 5 )
return 6 ;
}
void work( int s, int row, int n)
{
char temp[ 10 ],c;
int len,i,j,ans,k;
itoa(n,temp, 10 );
len = strlen(temp);
if (row % 2 == 1 )
{
ans = fun(row);
// printf(" ");
for (i = 0 ; i < len ; i ++ )
{
printf( " " );
// if(temp[i]-'0' != 1)
// {
for (j = 0 ; j < s; j ++ )
{
if (display[temp[i] - ' 0 ' ][ans] == 1 )
printf( " - " );
else printf( " " );
}
// }
printf( " %c " ,(i == len - 1 ) ? ' \n ' : ' ' );
}
}
else if (row % 2 == 0 )
{
ans = fun(row);
for (i = 0 ; i < s ; i ++ )
{
for (j = 0 ; j < len; j ++ )
{
if (display[temp[j] - ' 0 ' ][ans] == 1 )
printf( " | " );
else printf( " " );
// if(temp[j]-'0' != 1)
// {
for (k = 0 ; k < s ; k ++ )
printf( " " );
// for(j = 0 ; j < len; j ++)
// {
if (display[temp[j] - ' 0 ' ][ans + 1 ] == 1 )
printf( " | " );
else printf( " " );
// }
if (j != len - 1 ) printf( " " );
}
// }
printf( " \n " );
}
}
}
void solve( int s, int n)
{
for ( int i = 1 ; i <= 5 ; i ++ )work(s,i,n);
}
int main()
{
// freopen("in.txt","r",stdin);
int s,n;
init();
while (scanf( " %d%d " , & s, & n),s || n)
{
solve(s,n);
}
return 0 ;
}