joj1025
来源:互联网 发布:昆明行知中学地址 编辑:程序博客网 时间:2024/06/06 07:36
Input
The input contains several lines, one for each number to be displayed. Each line contains two integers s, n (1 <= s <= 10, 0 <= n <= 99 999 999), where n is the number to be displayed and s is the size in which it shall be displayed.The input file will be terminated by a line containing two zeros. This line should not be processed.
Output
Output the numbers given in the input file in an LC-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, also for the last digit.) There has to be exactly one column of blanks between two digits.Output a blank line after each number. (You will find a sample of each digit in the sample output.)
Sample Input
2 123453 678900 0
Sample Output
-- -- -- | | | | | | | | | | | | -- -- -- -- | | | | | | | | | | -- -- -- --- --- --- --- --- | | | | | | | || | | | | | | || | | | | | | | --- --- --- | | | | | | | || | | | | | | || | | | | | | | --- --- --- ---
#include <iostream>
#include <cstdio>
using namespace std;
void out(int s,char p[])
{
for(int i=0;p[i]!='\0';i++)//最顶端
{
if(i!=0)cout<<" ";
switch(p[i])
{
case '1':
case '4':
for(int j=1;j<=s+2;j++)
cout<<" ";
break;
case '2':
case '3':
case '5':
case '6':
case '7':
case '8':
case '9':
case '0':
cout<<" ";
for(int j=1;j<=s;j++)
cout<<"-";
cout<<" ";
break;
}
}
cout<<endl;
for(int i=1;i<=s;i++)//第二部分
{
for(int j=0;p[j]!='\0';j++)
{
if(j!=0)cout<<" ";
switch(p[j])
{
case '0':
case '4':
case '8':
case '9':
cout<<"|";
for(int t=1;t<=s;t++)
cout<<" ";
cout<<"|";
break;
case '1':
case '2':
case '3':
case '7':
for(int t=0;t<=s;t++)
cout<<" ";
cout<<"|";
break;
case '5':
case '6':
cout<<"|";
for(int t=0;t<=s;t++)
cout<<" ";
break;
}
}
cout<<endl;
}
for(int i=0;p[i]!='\0';i++)//第三部分
{
if(i!=0)cout<<" ";
switch(p[i])
{
case '0':
case '1':
case '7':
for(int t=1;t<=s+2;t++)
cout<<" ";
break;
default :
cout<<" ";
for(int t=1;t<=s;t++)
cout<<"-";
cout<<" ";
break;
}
}
cout<<endl;
for(int i=1;i<=s;i++)//第四部分
{
for(int j=0;p[j]!='\0';j++)
{
if(j!=0)cout<<" ";
switch(p[j])
{
case '1':
case '3':
case '4':
case '5':
case '7':
case '9':
for(int t=0;t<=s;t++)
cout<<" ";
cout<<"|";
break;
case '2':
cout<<"|";
for(int t=1;t<=s+1;t++)
cout<<" ";
break;
default :
cout<<"|";
for(int t=1;t<=s;t++)
cout<<" ";
cout<<"|";
break;
}
}
cout<<endl;
}
for(int i=0;p[i]!='\0';i++)
{
if(i!=0)cout<<" ";
switch(p[i])
{
case '1':
case '4':
case '7':
for(int t=1;t<=s+2;t++)
cout<<" ";
break;
default :
cout<<" ";
for(int t=1;t<=s;t++)
cout<<"-";
cout<<" ";
break;
}
}
cout<<endl;
}
int main()
{
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
int n;
char p[10];
bool temp=false;
while(scanf("%d%s",&n,p)==2)
{
//cout<<n<<" "<<p<<endl;
if(temp)cout<<endl;
temp=true;
if(n==0&&p[0]=='0')break;
out(n,p);
}
return 0;
}