付翔的专栏
在鄙视中成长 记录成长的点滴
posts - 106,  comments - 32,  trackbacks - 0

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 ( 0$ \le$n$ \le$99, 999, 999) and s is the size in which it shall be displayed ( 1$ \le$s$ \le$10). 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;
}

posted on 2010-07-22 18:13 付翔 阅读(166) 评论(0)  编辑 收藏 引用 所属分类: ACM 数据结构

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2010年7月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

CSDN - 我的blog地址

博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜