gpt4 book ai didi

c++ - 数字的矩形形状

转载 作者:行者123 更新时间:2023-11-30 02:34:42 25 4
gpt4 key购买 nike

for(int width=1; width<=5; width++) {
if(width <= 1) {
for(int width=1; width<=5; width++) {
cout<<" "<<width<<" ";
}
} else if(width<5) {
cout<< endl;
for(int width2=5; width2<=9; width2++) {
if(width2==5 || width2==9)
cout<<" "<<width2<<" ";
else
cout<< " ";
}
} else {
cout<< endl;
for(int width3=13; width3>=9; width3--) {
cout<<" "<<width3<<" ";
}
}
}

我在上面发布的这段代码绘制了这个形状

1 2 3 4 5
5 9
5 9
5 9
13 12 11 10 9

但我实际上希望我的代码像这样打印它,我尝试了很多改变但都是徒劳的。所以,我期待着你们。

1 2 3 4 5
16 6
15 7
14 8
13 12 11 10 9

最佳答案

如果在控制台打印东西,回车和回车会很乱。

诀窍是将问题分为 3 个阶段:

stage1:打印顶行,足够简单

阶段 2:打印最大的数字环绕,然后打印一些空白区域并以末尾的数字结束,确保数字相应地递增和递减。

stage3:打印最后一行。

这是我刚刚描述的算法的代码:

#include <iostream>

using namespace std;


int main()
{
const int width=6;

const int height=6;

int numberInFront=(height-1)*2 + (width-1)*2;
int numberAtTheEnd= width;
for(int i=1; i<width; ++i) cout<<i<<"\t"; //print top line
cout<<endl;

for(int i=0; i<height-1; ++i)
{
cout<<numberInFront<<"\t";
for(int j=0; j<width-3; j++) cout<<"\t"; //print inner space
cout<<numberAtTheEnd<<endl;
numberInFront--;
numberAtTheEnd++;
}


//print last line:
int counter = numberInFront;
while(counter!=numberAtTheEnd-1)
{
cout<<counter<<"\t";
counter--;

}
return 0;
}

关于c++ - 数字的矩形形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34377988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com