【发布时间】:2015-11-01 11:08:35
【问题描述】:
我要创建一种圣诞贺卡,其中需要包含使用嵌套 for 循环生成的设计。
输出需要在所有四个边上都有一个边框,里面有可变文本以及嵌套的for循环设计。
类似这样的事情:
我尝试使用 for 循环生成边框并将设计放入其中,但在打印多行设计时出现了问题。
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
char tree[10][10];
int i,j;
for(i=0; i<7; i++){
for(j=0; j<7; j++){
if(i==0 && j==3){
// cout << '*';
tree[i][j] = '*';
}
else if(i==1 && j==3){
// cout << '|';
tree[i][j] = '|';
}
else if(i==2 && j==3){
// cout << 'M';
tree[i][j] = 'M';
}
else if(i==3 && j>1 && j<5){
// cout << 'A';
tree[i][j] = 'A';
}
else if(i==4 && j>0 && j<6){
if(j % 2 == 0){
// cout << 'o';
tree[i][j] = 'o';
} else {
// cout << 'A';
tree[i][j] = 'A';
}
}
else if(i==5){
if(j % 2 == 0){
// cout << 'A';
tree[i][j] = 'A';
} else {
// cout << '~';
tree[i][j] = '~';
}
}
else if(i==6 && j==3){
// cout << "M";
tree[i][j] = 'M';
}
else {
// cout << ' ';
tree[i][j] = ' ';
}
}
tree[i][7] = '\n';
}
tree[6][8] = '\0';
for(i=0; i<30; i++){
for(j=0; j<70; j++){
if(i==0 || i==29){
cout << "^";
} else if(j==0 || j==69){
cout << "*";
}
int a,b;
if(j>=42 && j<50 && i >= 10 && i< 17){
for(a=0; a<7; a++){
for(b=0; b<8; b++){
cout << tree[a][b];
j++;
}
i++;
}
}
else {
cout << " ";
}
}
cout << endl;
}
return 0;
}
这会将整个边框向下推,因为设计是多行的。
我对这种方法有点困惑。也许使用setw()?
【问题讨论】:
-
显然我无法在没有登录的情况下查看该图像。也许您需要更改一些设置?通常我可以在 imgur 上看到东西。
-
另外,您的代码甚至无法编译。 (最后一个嵌套的
for循环中a和b的类型是什么?) -
如果您将
tree数组设置为输出的确切大小并用空格预填充它,这可能会容易得多。 -
哦该死的。道歉。原来的代码有很多cmets,所以我把a和b都剪掉了,试图清理一下。修复了 imgur 链接。
标签: c++ for-loop ascii-art setw