美文网首页
铂金组第二题

铂金组第二题

作者: 李耳_9992 | 来源:发表于2018-12-13 21:47 被阅读0次

空心三角形
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

问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2091

问题简述:一行输入一个字符x和一个整数n,输出高为n的x空心三角形

问题分析:循环语句逐个输出相应位置的相应元素(字符x或者空格)

程序说明:定义一个sum变量,当sum大于0时,每个三角形间空上一行;
在while循环中,循环输入数据得到空心三角形,直到输入@终止循环。
在for (int i = 1;i <= n;i++)循环中,逐个输出第i行的元素;
分为第一行,最后一行,中间行三个部分;
中间行的两个x字符为第n+i-1和第n-i+1个元素,其余为空格。

#include<iostream>
using namespace std;
int main()
{
    int sum=0;
    while (1)
    {
        char x;int n;
        cin >> x;
        if (x != '@')
        {
            
            if (sum > 0)
                cout << endl;
            cin >> n;
            for (int i = 1;i <= n;i++)
            {
                if (i == 1)
                {
                    for (int L = 1;L< n;L++)
                        cout << ' ';
                    cout << x << endl;
                }
                else if (i == n)
                {
                    for (int M = 1;M<= 2 * n - 1;M++)
                        cout << x;
                    cout << endl;
                }
                else
                    for (int k = 1;k < n+i;k++)
                    {
                        if (k == (n - i + 1))
                            cout << x;
                        else if( k == (n - 1 + i))
                            cout<<x<<endl;
                        else 
                            cout << ' ';
                    }
                
            }
            sum++;
        }
        else if(x=='@')
            break;
    }
       return 0;
}

相关文章

网友评论

      本文标题:铂金组第二题

      本文链接:https://www.haomeiwen.com/subject/dzlihqtx.html