作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我一直在尝试在网格内部绘制一个空心正方形。我最初使用宽度为 10 和高度为 5 的二维数组使用“*
”字符制作了网格。当从给定的特定坐标更改每个数组值时,我从左上角的坐标绘制正方形广场的。问题是当我打印出来时,它只完成了外面的一半。
重写网格数组的某些部分时,我是否遗漏了一个条件或太多条件?感谢您的帮助。
int main(){
char grid[5][10];//initialize array that will be row and column
for(int i=0;i<5;i++){
for(int j=0;j<10;j++){
grid[i][j]= '*';
}//for
}//for loop to fill grid with asterisk
cout << "GRID" << endl << endl;
for(int i=0;i<5;i++){
for(int j=0;j<10;j++){
cout << grid[i][j] ;
}//for
cout << endl;
}//for loop to print grid no shapes inside
cout << endl << endl;
int x = 2;
int y = 3;
int size = 3;
char c = 'o';
//will have a condition here to check if it can fit inside the
//grid but this is just to test it will be a member function.
for(int n=x-1;n<x+size-1; n++){
for(int p=y-1;p<y+size-1; p++){
if (n == x-1 || n==x+size-1 || p == y-1 || p== y+size-1 ){
grid[n][p] = c;
}
else
grid[n][p] = '*';
}//for
}//for loop to rewrite specific array coordinates with new c
cout << "Shape inside grid." << endl;
for(int n=0;n<5;n++){
for(int p=0;p<10;p++){
cout << grid[n][p];
}//for
cout << endl;
}//for loop to print new grid
return 0;
}
/*
This is my output:
**********
**ooo*****
**o*******
**o*******
**********
This is what I need:
**********
**ooo*****
**o*o*****
**ooo*****
**********
*/
最佳答案
问题出在双for
您设置为 'o'
的位置广场的边界。
for(int n=x-1;n<x+size-1; n++){
for(int p=y-1;p<y+size-1; p++){
if (n == x-1 || n==x+size-1 || p == y-1 || p== y+size-1 ){
grid[n][p] = c;
}
else
grid[n][p] = '*';
}
}
如果我理解得很好,您的意图是遍历正方形的点(for(int n=x-1;n<x+size-1; n++)
和 for(int p=y-1;p<y+size-1; p++)
),检查该点是否为边界点(if (n == x-1 || n==x+size-1 || p == y-1 || p== y+size-1 )
)和 (a) 在边界情况下,设置 c
(即 'o'
),(b) 否则设置 '*'
.
很好。
但是你失败了,因为 n
的范围和 p
来自x-1
和 y-1
, 包括到 x+size-1
和 y+size-1
, 排除。
所以 n
不可能是x+size-1
: 上限(包括)为 x+size-2
.和 p
不可能是y+size-1
: 上限(包括)为 y+size-2
.
结论:你的测试应该是
if (n == x-1 || n==x+size-2 || p == y-1 || p== y+size-2 )
p.s.:抱歉我的英语不好
关于c++ - 网格中的空心方 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37223149/
目前我的困境是我有一个 div 绝对定位在我所有代码的顶部(它有一个滑动动画)但是我现在无法访问顶部 div 后面的内容.. 这有动画,但没有链接或按钮可用:http://oxygenrad.io/i
我是一名优秀的程序员,十分优秀!