打印数字

打印数字

LC-Display



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 ;
}

你可能感兴趣的:(打印数字)