gpt4 book ai didi

c - 如何用 rand 函数填充数组?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:40:43 25 4
gpt4 key购买 nike

我想从中心开始填充矩阵。在此之后,我必须使用 rand () 函数提供位置,停止条件是找到邻居分配值为 1 的位置。必须这样做,直到到达矩阵的边界,即当 x 或 y 占据位置 0 或 (size-1) 时的 a

x = y = (size + 1) / 2;
matrix[x][y]=1; //default of the matrix
do{
x1=rand() %(size-1); //random position in x
y1=rand() %(size-1); // random position in y
matrix[x1][y1]=1; //declare the value in the position obtained
}while((matrix[x1-1][y1 ]==0)||
(matrix[x1+1][y1 ]==0)||
(matrix[x1 ][y1-1]==0)||
(matrix[x1 ][y1+1]==0)||
(x1==x)||(y1==y));

我的主要问题是我的条件是否为真,以及当我到达矩阵的边界时如何停止这种结合。

最佳答案

要从矩阵的中心向外移动,请在中心周围选择一个正方形并遍历该正方形中的元素。这是一个使用奇数大小矩阵的示例。您可以根据邻居的值添加其他条件来设置值。

int main(void)
{
srand((unsigned)time(NULL));
int size = 21;
int **matrix = malloc(size * sizeof(int*));
for(int i = 0; i < size; i++)
matrix[i] = malloc(size * sizeof(int));

for(int i = 0; i < size; i++)
for(int j = 0; j < size; j++)
matrix[i][j] = 0;

int center = size / 2 + 1;
matrix[center][center] = 1;
for(int range = 1; range < size / 2; range++)
{
for(int i = center - range; i < center + range; i++)
for(int j = center - range; j < center + range; j++)
{
if(
(i == (center - range))||
(j == (center - range))||
(i == (center + range - 1))||
(j == (center + range - 1))
)
if(rand() % 2)
matrix[i][j] = 1;
}
}

for(int i = 0; i < size; i++)
{
for(int j = 0; j < size; j++)
printf("%d", matrix[i][j]);
printf("\n");
}

return 0;
}

关于c - 如何用 rand 函数填充数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352083/

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