簡體   English   中英

如何用rand函數填充數組?

[英]How to fill the Array with the rand Function?

我想從中心開始填充一個矩陣。 此后,我必須為位置提供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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM