Number spiral in C, code not working

我与影子孤独终老i 提交于 2021-01-29 04:30:55

问题


I want to make a spiral in C using a 2D matrix, such as the one shown below:

This is the code that I worked out. But it keeps going into an infinite loop. I can't seem to get an output. Can anyone tell me what mistake I'm making in this logic?

And I know its pretty cumbersome, but the assignment is to get the output for any "n" dimensional array, and we need to use all the row_left,row_right, etc variables, as they're given in the question.

#include<stdio.h>

int main(void)
{
    int array[6][6]={1},dim,row_right=0,row_left=dim-1,col_up=0,col_down=dim-1;
    int i,j,num,cnt;

    printf("Enter the dimensions of 2D array:\n");
    scanf("%d",&dim);

    num=dim*dim;
    cnt=0;

    while(cnt!=num)
    {
        for(j=col_up;j<=col_down;j++)
        {   
            if(j=0) 
                array[row_right][j]=1;
            else
                array[row_right][j]=array[row_right][j-1]+1;
        }
        for(i=row_right+1;i<=row_left;i++)
            array[i][col_down]=array[i-1][col_down]+1;

        for(j=col_down-1;j>=col_up;j--)
            array[row_left][j]=array[row_left][j+1]+1;

        for(i=row_left-1;i>row_right;i--)
            array[i][col_up]=array[i+1][col_up]+1;

        row_right++;
        row_left--;
        col_up++;
        col_down--;
        cnt++;
    }

    for(i=0;i<dim;i++)
    {
        for(j=0;j<dim;j++)
            printf("%d\t",array[i][j]);

        printf("\n");
    }

    return 0;
}

回答1:


if(j=0)

is almost surely wrong. This sets j to zero and always evaluates to a false condition. The correct condition uses j == 0.

Also, the code uses the variable dim before it is read by scanf.




回答2:


You forgot to initialize the variable dim. That is used in following line :

int array[6][6]={1},dim,row_right=0,row_left=dim-1,col_up=0,col_down=dim-1;

With correctly formatted code you probably would have seen this.



来源:https://stackoverflow.com/questions/23083709/number-spiral-in-c-code-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!