您的位置:首页 > 大数据 > 人工智能

显示器 OpenJ_Bailian - 2745

2017-01-29 14:09 423 查看

显示器 OpenJ_Bailian - 2745

描述

你的一个朋友买了一台电脑。他以前只用过计算器,因为电脑的显示器上显示的数字的样子和计算器是不一样,所以当他使用电脑的时候会比较郁闷。为了帮助他,你决定写一个程序把在电脑上的数字显示得像计算器上一样。

Input

输入包括若干行,每行表示一个要显示的数。每行有两个整数s和n (1 <= s <= 10, 0 <= n <= 99999999),这里n是要显示的数,s是要显示的数的尺寸。

如果某行输入包括两个0,表示输入结束。这行不需要处理。

Output

显示的方式是:用s个’-‘表示一个水平线段,用s个’|’表示一个垂直线段。这种情况下,每一个数字需要占用s+2列和2s+3行。另外,在两个数字之间要输出一个空白的列。在输出完每一个数之后,输出一个空白的行。注意:输出中空白的地方都要用空格来填充。

Sample Input

2 12345

3 67890

0 0



思路

简单的模拟,先用空格进行初始化,然后再对不同的数字进行不同的操作存储。注意细节,两个数字之间的空列,以及空行等等。。

下面是代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
const int inf_int = 2e9;
const long long inf_ll = 2e18;
#define inf_add 0x3f3f3f3f
#define mod 1000000007
#define vi vector<int>
#de
4000
fine pb push_back
#define mp make_pair
#define fi first
#define se second
#define pi acos(-1.0)
#define pii pair<int,int>
#define Lson L, mid, rt<<1
#define Rson mid+1, R, rt<<1|1
const int maxn=5e2+10;
using namespace std;

int main()
{
char map[300][200];
char s[10];
int n,l,f,x;
while(1)
{
memset(map,' ',sizeof(map));//初始化
x=1;
cin>>n;
getchar();
gets(s);
if(n==0) return 0;
l=strlen(s);
for(int i=0;i<l;i++)    //不同的数字用不同的存储方法,将相应的字符存入map二维字符数组中
{
f=s[i]-'0';
if(f==0)
{
for(int j=x+1;j<x+n+1;j++)
map[1][j]=map[2*n+3][j]='-';
for(int j=2;j<2*n+3;j++)
{
if(j!=2+n)
map[j][x]=map[j][x+n+1]='|';
}
x=x+3+n;
}
else if(f==1)
{
for(int j=2;j<2*n+3;j++)
{
if(j!=2+n)
map[j][x+n+1]='|';
}
x=x+3+n;
}
else if(f==2)
{
for(int j=2;j<=n+1;j++)
map[j][x+n+1]='|';
for(int j=3+n;j<2*n+3;j++)
map[j][x]='|';
for(int j=x+1;j<x+n+1;j++)
map[1][j]=map[2+n][j]=map[2*n+3][j]='-';
x=x+3+n;
}
else if(f==3)
{
for(int j=x+1;j<x+n+1;j++)
map[1][j]=map[2+n][j]=map[2*n+3][j]='-';
for(int j=2;j<2*n+3;j++)
{
if(j!=2+n)
map[j][x+n+1]='|';
}
x=x+3+n;
}
else if(f==4)
{
for(int j=x+1;j<=x+n;j++)
map[2+n][j]='-';
for(int j=2;j<2*n+3;j++)
{
if(j!=2+n)
map[j][x+n+1]='|';
}
for(int j=2;j<=n+1;j++)
map[j][x]='|';
x=x+3+n;
}
else if(f==5)
{
for(int j=x+1;j<x+n+1;j++)
map[1][j]=map[2+n][j]=map[2*n+3][j]='-';
for(int j=2;j<=1+n;j++)
map[j][x]='|';
for(int j=3+n;j<2*n+3;j++)
map[j][x+n+1]='|';
x=x+3+n;
}
else if(f==6)
{
for(int j=2;j<2*n+3;j++)
{
if(j!=2+n)
map[j][x]='|';
}
for(int j=3+n;j<2*n+3;j++)
map[j][x+n+1]='|';
for(int j=x+1;j<x+n+1;j++)
map[1][j]=map[2+n][j]=map[2*n+3][j]='-';
x=x+3+n;
}
else if(f==7)
{

for(int j=x+1;j<x+n+1;j++)
map[1][j]='-';
for(int j=2;j<2*n+3;j++)
{
if(j!=2+n)
map[j][x+n+1]='|';
}
x=x+3+n;
}
else if(f==8)
{
for(int j=2;j<2*n+3;j++)
{
if(j!=2+n)
map[j][x]=map[j][x+n+1]='|';
}
for(int j=x+1;j<x+n+1;j++)
map[1][j]=map[2+n][j]=map[2*n+3][j]='-';
x=x+3+n;
}
else if(f==9)
{
for(int j=2;j<=n+1;j++)
map[j][x]='|';
for(int j=2;j<2*n+3;j++)
{
if(j!=2+n)
map[j][x+n+1]='|';
}
for(int j=x+1;j<x+n+1;j++)
map[1][j]=map[2+n][j]=map[2*n+3][j]='-';
x=x+3+n;
}
}
for(int i=1;i<=2*n+3;i++)  //输出
{
for(int j=1;j<=x;j++)
printf("%c",map[i][j]);
printf("\n");
}
cout<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: