gpt4 book ai didi

C 程序,如何使用循环在更大的形状上打印形状?

转载 作者:行者123 更新时间:2023-11-30 14:53:29 25 4
gpt4 key购买 nike

我想寻求一些关于 C 编程的帮助,因为我刚刚开始学习它。

我目前正在使用 *s 在更大的形状上打印几个不同的形状。

我使用 2 个 for 循环,外部循环用于打印基本形状/贴图(例如 10 x 5 矩形),内部循环用于打印基本形状上的另一个形状(例如 2 x 3 矩形)。

这是我现在拥有的:

enter image description here

使用以下代码:

 void createMapAndAddFeature(int x, int y, int xloc, int yloc, int feat_x_dim, int feat_y_dim)
{
for (int i = 0; i < y; i++)
{
for (int j = 0; j < x; j++)
{
//starting from which row
//xloc refers to which column, yloc refers to which row.
//e.g. xloc = 0, plots on 1st column. yloc = 2, plots on 3rd row
if (yloc == i && xloc == j) {
printf(" *"); //indicates at which coordinate to start plotting
}
else {
printf(" ."); // . is the full shape
}
}
printf("\n");
}

}

x 和 y 位置帮助我确定应该开始绘制形状的位置,因此我在 map 上有一个 *。

现在,我陷入了需要在 map 上创建形状的部分,例如,使用尺寸 2 和 3,这将导致以下输出: enter image description here

有谁知道如何实现这一目标吗?

我需要另一个嵌套的 for 循环吗?或者另一个“if else”语句来在基本形状上绘制 2x3 形状?

另外,我该怎么做才能绘制多个形状?例如,另一个 2x2 正方形:enter image description here

我认为我需要更多的“if else”条件来检查循环中现有的 * ,然后绘制后续的新形状,以便它与现有的形状重叠。如果我错了,请纠正我。

非常感谢任何帮助和建议。提前致谢。

最佳答案

(对我来说)最简单的方法是迭代空间中的所有点,并对每个点进行分类:

  • 如果它位于最外边框,则打印 *(可选)
  • 如果位于内部特征上,则打印 *
  • 否则打印

这是一个快速尝试:

#include <stdio.h>

static void printFigure(int width, int height, int fx, int fy, int fwidth, int fheight)
{
for (int y = 0; y < height; ++y)
{
for (int x = 0; x < width; ++x)
{
char out;
/* if (x == 0 || y == 0 || x == width - 1 || y == height - 1)
out = '*';
*/ if(x >= fx && y >= fy && x < (fx + fwidth) && y < (fy + fheight))
out = '*';
else
out = '.';
putchar(out);
}
putchar('\n');
}
}

int main(void) {
printFigure(10, 5, 0, 2, 2, 3);
return 0;
}

打印:

..........
..........
**........
**........
**........

注释掉的部分实现了第一个(可选)想法,标记外边框。我最初以为这是一个目标,但意识到我读错了。决定保留代码,因为它可能具有指导意义。

您当然可以执行一个循环并根据“像素索引”计算 xy,但我认为这对于像这样的简单的东西来说并不更好.

关于C 程序,如何使用循环在更大的形状上打印形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47197871/

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