Cube

【题目描述】
Yashem66学长有严重的强迫症!他完全无法忍受那些令他抓狂的东西,比如文具袋里的直尺,比如画得不规范的立方体。他总是自言自语:强人♂所难。
请写出一个程序,程序在读入立方体的三个棱长后,输出一个格式如样例的“立方体”。
【输入】
每个测试点一组测试数据,每组数据包含三个数字,表示立方体的长、宽、高分别为a,b,c。
【输出】
输出一个规定尺寸的立方体(形式如样例)。
【样例1】
Input1:
1 1 1
Output1:
…±+
././|
±+.+
|.|/.
±+…
【样例2】
Input2:
6 2 4
Output2:
…±±±±±±+
…/././././././|
…±±±±±±+.+
./././././././|/|
±±±±±±+.+.+
|.|.|.|.|.|.|/|/|
±±±±±±+.+.+
|.|.|.|.|.|.|/|/|
±±±±±±+.+.+
|.|.|.|.|.|.|/|/.
±±±±±±+.+…
|.|.|.|.|.|.|/…
±±±±±±+…
【数据范围与约定】
对于100%的数据满足 — a,b,c<=20
(提示)把样例复制到记事本里用等宽字体看体验更佳。

题解

模拟,详见代码

代码

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
int a,b,c;
int main()
{
    cin>>a>>b>>c;
    for(int i=1;i<=(2*(b+c)+1);i++) 
    {
        if(i%2==1 && i<=(2*b)) 
        {
            for(int j=1;j<=2*(b-i/2);j++) cout<<".";
            for(int j=2*(b-i/2)+1;j<=2*(b-i/2)+a*2;j+=2) cout<<"+-";
            cout<<"+";
            if(b<c || i<=(2*c+1)) for(int j=2*(b-i/2)+a*2+2;j<=2*(a+b)+1;j+=2) cout<<".+";
            else
            {
                cout<<".";
            for(int j=1;j<	=c;j++) cout<<"+.";
                for(int j=2*(b-i/2)+a*2+2*c+3;j<=2*(a+b)+1;j++) cout<<".";
        }
        cout<<endl;
        continue;
    }
    if(i%2==0 && i<=(2*b))
    {
        for(int j=1;j<=2*(b-i/2)+1;j++) cout<<".";
        for(int j=2*(b-i/2)+1;j<=2*(b-i/2)+a*2;j+=2) cout<<"/.";
        if(b<c || i<=(2*c+1)) for(int j=2*(b-i/2)+a*2+2;j<=2*(a+b)+1;j+=2) cout<<"/|";
        else
        {
            cout<<"/";
            for(int j=1;j<=c;j++) cout<<"|/";
            for(int j=2*(b-i/2)+a*2+2*c+3;j<=2*(a+b)+1;j++) cout<<".";
        }
        cout<<endl;
        continue;
    }
    if(i%2==1 && i>(2*b)&& i<=2*c+1)
    {
        for(int j=1;j<=2*a;j+=2) cout<<"+-";
        cout<<"+";
        for(int j=2*(a+1);j<=2*(a+b)+1;j+=2) cout<<".+";
        cout<<endl;
        continue;
    }
    if(i%2==0 && i>(2*b) && i<=2*c+1)
    {
        for(int j=1;j<=2*a;j+=2) cout<<"|.";
        cout<<"|";
        for(int j=2*(a+1);j<=2*(a+b)+1;j+=2) cout<<"/|";
        cout<<endl;
        continue;
    }
    if(i%2==1 && i>(2*c+1))
    {
        for(int j=1;j<=2*a;j+=2) cout<<"+-";
        cout<<"+";
        int k=(2*(c+b)+1-i)/2+1;
        for(int j=1;j<=k-1;j++) cout<<".+";
        for(int j=2*a+1+2*k;j<=2*(a+b)+2;j++) cout<<".";
        cout<<endl;
        continue;
    }
    if(i%2==0 && i>(2*c+1))
    {
        for(int j=1;j<=2*a;j+=2) cout<<"|.";
        int k=(2*(c+b)+1-i)/2+1;
        for(int j=1;j<=k;j++) cout<<"|/";
        for(int j=2*a+1+2*k;j<=2*(a+b)+1;j++) cout<<".";
        cout<<endl;
        continue;
    }
}
return 0;

}

若您觉得此篇博客写得不错,请别忘了点赞并关注我哦 >_<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值