ZZULIOJ--2844: 圣诞树(^-^)V(模拟)

题目描述

万圣节刚过去没见天,转眼间就快要圣诞节了。雀氏呀,快乐的时间总是短暂的,zyz 学长每天沉浸在快乐的刷题当中时,总是抱怨时间就像开了三倍速一样。学长为了让时间流逝地慢一点,所以学长决定在圣诞节当天种一棵“圣诞树”来陪伴自己一起度过这段快乐的时光。但是学长还没有挑选出来,作为迷人的zyz学长忠实粉丝的你知道这个消息后,肯定不会错过这个机会来表达自己对学长的崇拜与迷恋。所以你决定设计一棵“圣诞树”,来送给学长,以表自对zyz学长的崇拜与迷恋。下面是你设计好的“圣诞树”。

        圣诞树分为五部分,从第一部分到第三部分,每部分的宽度分别为 r, r + d, r + 2 * d, 然后第四部分为树干,第五部分为土壤。然后给出“树干”的宽度和高度r1,h1和土壤”的宽度和高度r2,h2。(保证r1,r2都为奇数)。设计程序输出对应大小的圣诞树。

输入

第一行输入题目所描述的r和d,数据之间以空格相隔。
第二行输入r1,h1,r2和h2,数据之间以空格相隔。

3<= r <= 11 && r为奇数                      0<= d <= 10 && d为偶数

1 <= r1 <= 11 && r1为奇数                  5 <= h1 <= 50

12 <= r2 <= 49 && r2为奇数                1 <= h2 <= 10

r1 < r2

输出
请打印上述“圣诞树”
样例输入
5 2
3 5 9 2

样例输出

    *
   ***
  *****
    *
   ***
  *****
 *******
    *
   ***
  *****
 *******
*********
   ***
   ***
   ***
   ***
   ***
*********
*********
注意考虑到最长的是第三个三角的底边还是土壤的宽度就🆗了~
 
///树在中间版本
 
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int r,d;
	int r1,h1,r2,h2;
	while(cin>>r>>d)
	{
		cin>>r1>>h1>>r2>>h2;
	
	int x3=r+2*d;//第三层的最长宽度
	int x2=r+d;
	int x1=r;
	
	int g1=(x1+1)/2;
	int g2=(x2+1)/2;
	int g3=(x3+1)/2;
	
	 
	int maxr=max(x3,r2);//土壤宽还是最长的三角底边宽 
	
	
	
	for(int i=1;i<=g1;i++)//第一层 
	{
		for(int j=(maxr-1)/2;j>=i;j--)
		cout<<" ";
		
		for(int k=1;k<=2*i-1;k++)
		cout<<"*";
		cout<<endl;
	}
	for(int i=1;i<=g2;i++)//第二层 
	{
		for(int j=(maxr-1)/2;j>=i;j--)
		cout<<" ";
		
		for(int k=1;k<=2*i-1;k++)
		cout<<"*";
		cout<<endl;
	}
	for(int i=1;i<=g3;i++)//第三层 
	{
		for(int j=(maxr-1)/2;j>=i;j--)
		cout<<" ";
		
		for(int k=1;k<=2*i-1;k++)
		cout<<"*";
		cout<<endl;
	}
	for(int i=1;i<=h1;i++)
	{
		for(int j=(maxr-r1)/2;j>0;j--)
		cout<<" ";
		for(int j=1;j<=r1;j++)
		cout<<"*";
		cout<<endl;
	}
	if(maxr==r2)//最长的是土壤的长度 
	{
		for(int i=1;i<=h2;i++)
	{
		for(int j=1;j<=r2;j++)
		{
			cout<<"*";
		}
		if(i!=h2)
		cout<<endl;
	}
	}
	else///最长的是第三个三角的底边 
	{
	///	cout<<"1"<<endl;
		
		for(int i=1;i<=h2;i++)
		{
			for(int j=(maxr-r2)/2;j>0;j--)
				cout<<" ";
			for(int j=1;j<=r2;j++)
		        cout<<"*";
		        
			if(i!=h2)
	    	cout<<endl;
		}
	}
	
	}
	
	
	
	
	return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值