您的位置:首页 > 其它

LC-Display

2010-06-07 16:35 274 查看
最近在看《挑战编程-程序设计竞赛训练手册》,下面是其中一道题目,我的方法麻烦了点,但是很好懂。

// LC-Display2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
using namespace std;
char data_display[2*10+3][(10+2)*8+7];
int count=0;
int _tmain(int argc, _TCHAR* argv[])
{
void display0(int a, char b[2*10+3][(10+2)*8+7],int c);
void display1(int a, char b[2*10+3][(10+2)*8+7],int c);
void display2(int a, char b[2*10+3][(10+2)*8+7],int c);
void display3(int a, char b[2*10+3][(10+2)*8+7],int c);
void display4(int a, char b[2*10+3][(10+2)*8+7],int c);
void display5(int a, char b[2*10+3][(10+2)*8+7],int c);
void display6(int a, char b[2*10+3][(10+2)*8+7],int c);
void display7(int a, char b[2*10+3][(10+2)*8+7],int c);
void display8(int a, char b[2*10+3][(10+2)*8+7],int c);
void display9(int a, char b[2*10+3][(10+2)*8+7],int c);
int s,n;
char data[8];
cin>>s;
cin>>data;
n=0;
for(int i=0;i<2*10+3;++i)
{
for(int j=0;j<(10+2)*8+7;++j)
{
data_display[i][j]=' ';
}
}
while(n<strlen(data))
{
switch(data
)
{
case '0':
display0(count, data_display,s);
break;
case '1':
display1(count,data_display,s);
break;
case '2':
display2(count,data_display,s);
break;
case '3':
display3(count,data_display,s);
break;
case '4':
display4(count,data_display,s);
break;
case '5':
display5(count,data_display,s);
break;
case '6':
display6(count,data_display,s);
break;
case '7':
display7(count,data_display,s);
break;
case '8':
display8(count,data_display,s);
break;
case '9':
display9(count,data_display,s);
break;
default:
cout<<"The input data is wrong!"<<endl;
break;
}
++count;
++n;
}
for(int i=0;i<2*10+3;++i)
{
for(int j=0;j<(10+2)*8+7;++j)
{
if(j==(10+2)*8+7-1)
{
cout<<data_display[i][j];
cout<<'/n';
}
else cout<<data_display[i][j];
}
}
system("pause");
return 0;
}
void display0(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1;
int m,n;
m=0;
n=start+1;
m1=0;

while(m1<c)
{
b[m]
='-';
++n;
++m1;
}
m1=0;
n=start+1;
m=m+2*c+2;
while(m1<c)
{
b[m]
='-';
++n;
++m1;
}
m1=0;
m=1;
n=start;
while(m1<(2*c+1))
{
n=start;
if(m!=c+1)
{
b[m]
='|';
n+=(c+1);
b[m]
='|';
}
++m;
++m1;
}
}
void display1(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1;
int m,n;
m=0;
n=start+c+1;
m1=0;
while(m1<2*c+3)
{
if((m!=0)&&(m!=(c+1))&&(m!=(2*c+2)))
{
b[m]
='|';
}
++m;
++m1;
}
}
void display2(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1,m2;
int m,n;
m=0;
n=start+1;
m1=0;
m2=0;
while(m1<2*c+3)
{
if((m==0)||(m==(c+1))||(m==(2*c+2)))
{
n=start+1;
m2=0;
while(m2<c)
{
b[m]
='-';
++n;
++m2;
}
}
else
{
if(m<c+1)
{
n=start+c+1;
b[m]
='|';
}
if(m>c+1)
{
n=start;
b[m]
='|';
}
}
++m;
++m1;
}
}
void display3(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1,m2;
int m,n;
m=0;
n=start+1;
m1=0;
m2=0;
while(m1<2*c+3)
{
if((m==0)||(m==(c+1))||(m==(2*c+2)))
{
n=start+1;
m2=0;
while(m2<c)
{
b[m]
='-';
++n;
++m2;
}
}
else
{
n=start+c+1;
b[m]
='|';
}
++m;
++m1;
}
}
void display4(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1,m2;
int m,n;
m=0;
n=start+1;
m1=0;
m2=0;
while(m1<2*c+3)
{
if(m==c+1)
{
n=start+1;
m2=0;
while(m2<c)
{
b[m]
='-';
++n;
++m2;
}
}
else if(m!=0&&m!=2*c+2)
{
if(m>c+1)
{
n=start+c+1;
b[m]
='|';
}
if(m<c+1)
{
n=start;
b[m]
='|';
n=n+c+1;
b[m]
='|';
}
}
++m;
++m1;
}
}
void display5(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1,m2;
int m,n;
m=0;
n=start+1;
m1=0;
m2=0;
while(m1<2*c+3)
{
if((m==0)||(m==(c+1))||(m==(2*c+2)))
{
n=start+1;
m2=0;
while(m2<c)
{
b[m]
='-';
++n;
++m2;
}
}
else
{
if(m<c+1)
{
n=start;
b[m]
='|';
}
if(m>c+1)
{
n=start+c+1;
b[m]
='|';
}
}
++m;
++m1;
}
}
void display6(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1,m2;
int m,n;
m=0;
n=start+1;
m1=0;
m2=0;
while(m1<2*c+3)
{
if((m==0)||(m==(c+1))||(m==(2*c+2)))
{
n=start+1;
m2=0;
while(m2<c)
{
b[m]
='-';
++n;
++m2;
}
}
else
{
if(m<c+1)
{
n=start;
b[m]
='|';
}
if(m>c+1)
{
n=start;
b[m]
='|';
n=n+c+1;
b[m]
='|';
}
}
++m;
++m1;
}
}
void display7(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1,m2;
int m,n;
m=0;
n=start+1;
m1=0;
m2=0;
while(m1<2*c+3)
{
if(m==0)
{
n=start+1;
m2=0;
while(m2<c)
{
b[m]
='-';
++n;
++m2;
}
}
else if(m!=c+1&&m!=2*c+2)
{
n=start+c+1;
b[m]
='|';
}
++m;
++m1;
}
}
void display8(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1,m2;
int m,n;
m=0;
n=start+1;
m1=0;
m2=0;
while(m1<2*c+3)
{
if((m==0)||(m==(c+1))||(m==(2*c+2)))
{
n=start+1;
m2=0;
while(m2<c)
{
b[m]
='-';
++n;
++m2;
}
}
else
{
n=start;
b[m]
='|';
n=start+c+1;
b[m]
='|';
}
++m;
++m1;
}
}
void display9(int a, char b[2*10+3][(10+2)*8+7],int c)
{
int start;
if(a==0)
{
start=0;
}
else
{
start=(c+2)*a+a-1;
}
int m1,m2;
int m,n;
m=0;
n=start+1;
m1=0;
m2=0;
while(m1<2*c+3)
{
if((m==0)||(m==(c+1))||(m==(2*c+2)))
{
n=start+1;
m2=0;
while(m2<c)
{
b[m]
='-';
++n;
++m2;
}
}
else
{
if(m<c+1)
{
n=start;
b[m]
='|';
n=start+c+1;
b[m]
='|';
}
if(m>c+1)
{
n=start+c+1;
b[m]
='|';
}
}
++m;
++m1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: