Problem Description
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
Input
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
Output
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。
Sample Input
X 2 A 7 @
Sample Output
X XXX A A A A A A A A A A A AAAAAAAAAAAAA
挺无聊的,这种题目,多看一下题目,记住输出的每一行后面没有多余的空格,看一下示例,下面用-代替空格:
-A-
AAA
是错误的,正确如下:
-A
AAA
是不是很坑。代码如下:
/*空心三角形
*很水,真的,我都不愿意拿这种题目来写博客了!
*/
#include <iostream>
using namespace std;
void print_x(char c, int n, int index1, int index2)
{
if (index2 == n)
{
for (int i = 1; i <= n; ++i)
cout << c;
}
else
{
for (int i = 1; i <= index2; ++i)
{
if (i == index1 || i == index2)
cout << c;
else
cout << ' ';
}
}
cout << endl;
}
int main()
{
int n = 0;
int index1 = 0;
int index2 = 0;
char c = ' ';
bool is_first_tri = true; //是否为第一个三角形
while (cin >> c && c != '@')
{
cin >> n;
if (!is_first_tri)
cout << endl;
index1 = index2 = (2 * n - 1) / 2 + 1;
while (index1 >= 1 && index2 <= 2 * n - 1)
{
print_x(c, 2 * n - 1, index1, index2);
index1 -= 1;
index2 += 1;
}
is_first_tri = false;
}
return 0;
}