#include<iostream>
#include<stdio.h>
#include<fstream>
#include<string.h>
#include<cmath>
#include<algorithm>
using namespace std;
int s, n,len;
int number[10];
void trans(int num){
if(num == 0){
number[1] = 0;
len = 1;
return ;
}
len = log10((double)num) + 1;
int i = 0;
int temp[10];
memset(temp,0,sizeof(temp));
while(i < len){
temp[++i] = num % 10;
num /= 10;
}
for(int j = len; j > 0; --j){
number[len-j + 1] = temp[j];
}
}
int main(){
//freopen("1.txt","r",stdin);
//freopen("D:\\3.txt","w",stdout);
bool first = true;
while(scanf("%d%d",&s,&n)){
if(s == 0 && n == 0)
break;
memset(number,'\0',sizeof(number));
trans(n);
int total = s + 2; //字符宽度
/*for(int i = 1; i <= len; ++i)
printf("%d",number[i]);
printf("\n");*/
for(int i = 1; i <= len; ++i){
switch(number[i]){
case(2):
case(3):
case(5):
case(6):
case(7):
case(8):
case(9):
case(0):
printf(" ");
for(int j = 0; j < s; ++j)
printf("-");
printf(" ");
break;
case(1):
case(4):
for(int j = 0; j < total; ++j)
printf(" ");break;
}
printf(" ");
} //第一行
printf("\n");
//第一个s行开始
for(int i = 1; i <=s ; ++i){
for(int j = 1; j <= len; ++j){
/* if(j > 1)
printf(" ");*/
switch(number[j]){
case(1):
case(2):
case(3):
case(7):
for(int i = 1; i < total;++i)
printf(" ");
printf("|");
break;
case(5):
case(6):
printf("|");
for(int i = 1; i < total; ++i)
printf(" ");
break;
case(4):
case(8):
case(9):
case(0):
printf("|");
for(int i = 0; i < s; ++i)
printf(" ");
printf("|");
break;
}
printf(" ");
}
printf("\n");
}
//中间的需要单独处理的一行
for(int i = 1; i <= len ; ++i){
switch(number[i]){
case(0):
case(1):
case(7):
for(int i = 0; i < total ; ++i)
printf(" ");
break;
case(2):
case(3):
case(4):
case(5):
case(6):
case(8):
case(9):
printf(" ");
for(int j = 0; j <s; ++j)
printf("-");
printf(" ");
break;
}
printf(" ");
}
printf("\n");
//s行特殊处理
for(int i = 1; i <= s; ++i){
for(int j = 1; j <= len; ++j){
/*if(j > 1)
printf(" ");*/
switch(number[j]){
case(1):
case(4):
case(3):
case(5):
case(7):
case(9):
for(int i = 1; i < total;++i)
printf(" ");
printf("|");
break;
case(2):
printf("|");
for(int i = 1; i < total; ++i)
printf(" ");
break;
case(6):
case(8):
case(0):
printf("|");
for(int i = 0; i < s; ++i)
printf(" ");
printf("|");
break;
}
printf(" ");
}
printf("\n");
}
//最后一行
for(int i = 1; i <= len; ++i){
/*if(i > 1)
printf(" ");*/
switch(number[i]){
case(1):
case(4):
case(7):
for(int j = 0; j < total; ++j)
printf(" ");break;
case(2):
case(3):
case(5):
case(6):
case(8):
case(9):
case(0):
printf(" ");
for(int j = 0; j <s; ++j)
printf("-");
printf(" ");
break;
}
printf(" ");
}
printf("\n");
printf("\n");
}
return 0;
}
1.计算数字的位数时记得单独处理0的情况(因为0不可以用对数函数来计算)
2.记得空格要对齐~不能多也不能少,要是看上去一样还wa那就放在txt里全选对比一下空格和换行之类的~