表示具有填充和空白区域的面板的数组
An array that represents a panel with filled and blank spaces
我正在编写一个程序来读取输入(水平线和垂直线的坐标),如下所示:
struct Data {
// the beginning and ending coordinate of a line
int xStart;
int xEnd;
int yStart;
int yEnd;
};
// the dimension of panel on which you draw lines
int panelWidth, panelHeight;
// number of lines drawn on the panel
int numLines;
scanf("%d %d", &panelWidth, &panelHeight);
struct Data data[5];
int j;
int i;
j = 0;
if (scanf("%s", &numLines) == 1)
{
for (i = 0 ; ((i < numLines) && (j < 5)) ; ++i)
{
if (scanf("%d %d %d %d",
&data[j].xStart,
&data[j].yStart,
&data[j].xEnd,
&data[j].yEnd) == 4)
{
j++;
}
}
}
现在我想将这些值放在一个数组中,该数组将代表面板并在面板上绘制所有线条(例如,将值 1 放在有线的地方,将 0 放在单元格为空的地方),所以然后我可以计算这些线构成的所有区域(带零的空格)。
它应该像洪水填充一样工作。
如何制作这样的数组?或者有更好的选择吗?
This is an example of a more complicated input:
27 27 // width, height
7 // number of Lines
10 0 10 10 // xStart, xEnd, yStart, yEnd
0 10 10 10 // xStart, xEnd ...
5 5 15 5
15 5 15 15
5 15 21 15
5 5 5 15
5 20 26 20
Is your question correctly condensed to 'how do I make an array of a certain size in C'?
– Jongware
我猜 Jongware 正在做某事,并且您正在尝试动态分配一个 n x m 数组。换句话说,您希望创建一个大小由用户输入的内容决定的数组。
为此,您必须使用 'the heap'。如果您以前没有在 C 中进行过动态内存分配,我建议您只制作一个大数组(比如 10,000 个元素)并且只使用您需要的任何内容。然后你可以确保用户不能输入任何比这更大的东西。
如果您真的想动态地执行此操作,我们将使用您的 panelWidth
和 panelHeight
变量。事实上,在 Whosebug 上有一个很好的 post:
Malloc a 2d array in C
希望其中一种方法是您正在寻找的。如果没有,澄清你到底在问什么也没什么坏处。您提供了很多信息,但并非所有信息都真正相关。我觉得Jongware把你的问题总结的很好
我正在编写一个程序来读取输入(水平线和垂直线的坐标),如下所示:
struct Data {
// the beginning and ending coordinate of a line
int xStart;
int xEnd;
int yStart;
int yEnd;
};
// the dimension of panel on which you draw lines
int panelWidth, panelHeight;
// number of lines drawn on the panel
int numLines;
scanf("%d %d", &panelWidth, &panelHeight);
struct Data data[5];
int j;
int i;
j = 0;
if (scanf("%s", &numLines) == 1)
{
for (i = 0 ; ((i < numLines) && (j < 5)) ; ++i)
{
if (scanf("%d %d %d %d",
&data[j].xStart,
&data[j].yStart,
&data[j].xEnd,
&data[j].yEnd) == 4)
{
j++;
}
}
}
现在我想将这些值放在一个数组中,该数组将代表面板并在面板上绘制所有线条(例如,将值 1 放在有线的地方,将 0 放在单元格为空的地方),所以然后我可以计算这些线构成的所有区域(带零的空格)。
它应该像洪水填充一样工作。
如何制作这样的数组?或者有更好的选择吗?
This is an example of a more complicated input:
27 27 // width, height
7 // number of Lines
10 0 10 10 // xStart, xEnd, yStart, yEnd
0 10 10 10 // xStart, xEnd ...
5 5 15 5
15 5 15 15
5 15 21 15
5 5 5 15
5 20 26 20
Is your question correctly condensed to 'how do I make an array of a certain size in C'?
– Jongware
我猜 Jongware 正在做某事,并且您正在尝试动态分配一个 n x m 数组。换句话说,您希望创建一个大小由用户输入的内容决定的数组。
为此,您必须使用 'the heap'。如果您以前没有在 C 中进行过动态内存分配,我建议您只制作一个大数组(比如 10,000 个元素)并且只使用您需要的任何内容。然后你可以确保用户不能输入任何比这更大的东西。
如果您真的想动态地执行此操作,我们将使用您的 panelWidth
和 panelHeight
变量。事实上,在 Whosebug 上有一个很好的 post:
Malloc a 2d array in C
希望其中一种方法是您正在寻找的。如果没有,澄清你到底在问什么也没什么坏处。您提供了很多信息,但并非所有信息都真正相关。我觉得Jongware把你的问题总结的很好