1
打印JL2009这是2009年吉林省程序设计大赛的第一题,当时这道题不是我做的,今天偶尔拿出来做了下,才发现贼是变态。
1) 相邻字母间空一行
2)每个实例间空一行
3)L和2在最后时不要输出多余的空格
4)最后一个实例不要多输出一个空行
以上大家都能想到,最让我郁闷的是下面这个:
在最后一个实例时,光标要移到新的一行开端,否则则'Prensentatino Error'

code

/**//*problem Welcome to JL2009
author:Chad
date:2009-6-13 21:34:53
*/
#include<iostream>
#include <sstream>
#include<iomanip>
using namespace std;
int n,i,j,k;
string str;
bool isLast;
inline void print1(char ch)


{
switch (ch)

{
case 'J':if(!isLast) cout<<setw(n+2)<<"*"<<" ";
else cout<<setw(n+2)<<"*";
break;
case 'L':if(!isLast) cout<<"*"<<string(n+2,' ');
else cout<<"*";
break;
case '2':if(!isLast) cout<<string(n+2,'*')<<" ";
else cout<<string(n+2,'*');
break;
case '0':if(!isLast) cout<<string(n+2,'*')<<" ";
else cout<<string(n+2,'*');
break;
case '9':if(!isLast) cout<<string(n+2,'*')<<" ";
else cout<<string(n+2,'*');
break;
default :
break;
}
}
inline void print2(char ch)


{
switch (ch)

{
case 'J': if(!isLast) cout<<string(n+1,' ')<<"* ";
else cout<<string(n+1,' ')<<"*";
break;
case 'L':if(!isLast) cout<<"*"<<string(n+2,' ');
else cout<<"*";
break;
case '2':if(!isLast) cout<<setw(n+2)<<"*"<<" ";
else cout<<setw(n+2)<<"*";
break;
case '0':if(!isLast) cout<<"*"<<string(n,' ')<<"* ";
else cout<<"*"<<string(n,' ')<<"*";
break;
case '9':if(!isLast) cout<<"*"<<string(n,' ')<<"* ";
else cout<<"*"<<string(n,' ')<<"*";
break;
default :
break;
}
}
inline void print3(char ch)


{
switch (ch)

{
case 'J':if(!isLast) cout<<setw(n+2)<<"*"<<" ";
else cout<<setw(n+2)<<"*";
break;
case 'L':if(!isLast) cout<<"*"<<string(n+2,' ');
else cout<<"*";
break;
case '2':if(!isLast) cout<<string(n+2,'*')<<" ";
else cout<<string(n+2,'*');
break;
case '0':if(!isLast) cout<<"*"<<string(n,' ')<<"* ";
else cout<<"*"<<string(n,' ')<<"*";
break;
case '9':if(!isLast) cout<<string(n+2,'*')<<" ";
else cout<<string(n+2,'*');
break;
default :
break;
}
}
inline void print4(char ch)


{
switch (ch)

{
case 'J':if(!isLast) cout<<setw(n+2)<<"*"<<" ";
else cout<<setw(n+2)<<"*";
break;
case 'L':if(!isLast) cout<<"*"<<string(n+2,' ');
else cout<<"*";
break;
case '2':if(!isLast) cout<<"*"<<string(n+2,' ');
else cout<<"*";
break;
case '0':if(!isLast) cout<<"*"<<string(n,' ')<<"* ";
else cout<<"*"<<string(n,' ')<<"*";
break;
case '9':if(!isLast) cout<<setw(n+3)<<"* ";
else cout<<setw(n+2)<<"*";
break;
default :
break;
}
}
inline void print5()


{
cout<<string(n+2,'*');
if(!isLast) cout<<" ";
}
int main()


{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int i,j,c;
c=0;
while (cin>>n>>str)

{
c++;
if(c>1)
cout<<"\n";
isLast=false;
k=str.length();
for(j=0;j<k;j++ )

{
isLast=(j==k-1)?true:false;
print1(str[j]);
}
cout<<"\n";
for(i=0;i<n;i++)

{
for(j=0;j<k;j++ )

{
isLast=(j==k-1)?true:false;
print2(str[j]);
}
cout<<"\n";
}
for(j=0;j<k;j++ )

{
isLast=(j==k-1)?true:false;
print3(str[j]);
}
cout<<"\n";
for(i=0;i<n;i++)

{
for(j=0;j<k;j++ )

{
isLast=(j==k-1)?true:false;
print4(str[j]);
}
cout<<"\n";
}
for(j=0;j<k;j++ )

{
isLast=(j==k-1)?true:false;
print5();
}
cout<<"\n";
}
return 0;
}
