【发布时间】:2020-05-11 07:23:56
【问题描述】:
我目前正在从事一个 CS 课程的项目,我的任务是打印出建筑物的 ASCII 模型。该项目的目标是允许用户输入一个整数并将该整数作为建筑物的“部分”数量。下面我将给我的例子分解成几个部分。任何帮助将不胜感激,感谢任何花时间阅读本文的人。
模式如下。第 x = ((x * 2) + 2) = 代码行数和建筑物的“宽度”。 (x = 任何整数值)
|\/|
|/\| //section 0 ((section * 2) + 2)
/--\ 0 + 2 = 2
|\::/|
|:\/:| //section 1 ((section * 2) + 2)
|:/\:| 2 + 2 = 4
|/::\|
/----\
|\::::/|
|:\::/:|
|::\/::| //section 2 ((section * 2) + 2)
|::/\::| 4 + 2 = 6
|:/::\:|
|/::::\|
/------\
我设法弄清楚了这种模式,但是很难将多个循环相互嵌入。到目前为止,我所拥有的这座建筑的最佳代表就是这个。
int i = 0;
int j = 0;
int size = 2;
int sizeAdj = (size * 2) + 2;
int leftMost = sizeAdj;
for(i = 0; i <= size; i++){
for(j = 0; j < 1; j++){
cout<<setw(leftMost + 1)<<"|";
cout<<"\\";
cout<<"/";
cout<<"|";
cout<<endl;
for(j = 0; j < 1; j++){
cout<<setw(leftMost + 1)<<"|";
cout<<"/";
cout<<"\\";
cout<<"|";
}
leftMost = leftMost - 1;
}
cout<<endl;
}
这会打印出以下内容。
|\/|
|/\|
|\/|
|/\|
|\/|
|/\|
再次感谢您。
【问题讨论】:
-
1.该示例似乎不正确:高度和宽度不同。 2. 您可以使用填充有
:的方形数组,替换边框和对角线,最后逐行打印 - 无需嵌套、混乱的循环。 -
@TheFailurebyDesign 澄清 1. 我没有计算底部“层”,因为我认为这将是一个独立的循环。至于2.我不知道该怎么做,你能进一步解释一下吗?感谢您的评论!
-
@user4581301 我能够使用两个 for 循环打印一个盒子,这就是盒子的“进化”。我不知道如何在每个片段中旋转“上层”和“下层”而不是一个接一个地重复它们。我想我可能不得不在字符之间使用 setw() 来修改间距,但我什至不想考虑这一点。感谢您的评论!
-
我很抱歉。我将这些部分误读为不同的测试运行,并没有意识到这是一栋建筑在上升时会聚在一起。
-
@user4581301 不用担心! :)
标签: c++ loops for-loop while-loop ascii