2014-04-15 40 views
1

我想使用2D矩陣,以使在C螺旋如下面示出的一個:數螺旋,代碼不工作

這是我計算出的代碼。但它始終處於無限循環之中。我似乎無法獲得輸出。誰能告訴我在這個邏輯中我犯了什麼錯誤?

我知道它非常麻煩,但是它的任務是獲取任意「n」維數組的輸出,並且我們需要使用所有row_left,row_right等變量,因爲它們在問題中給出。

#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

請縮進您的代碼。這可以幫助你自己發現問題。 –

+1

嘗試輸入儘可能小的尺寸,並在調試器中運行以查看發生了什麼。 –

+1

row_right和col_down無法使用dim進行初始化,直到dim被賦予一個值。 – Fred

回答

1

您忘記初始化變量dim。用於以下行:

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

使用格式正確的代碼,您可能會看到這一點。

+0

你是對的..修復它..謝謝:) – AnujaPL

+0

@AnujaPL:和格式你的代碼正確...它是不可讀的。 –

2
if(j=0) 

幾乎肯定是錯誤的。這將j設置爲零,並始終評估爲假狀態。正確的條件使用j == 0

此外,代碼使用變量dim,然後它被scanf讀取。

+0

是啊..這是一個非常愚蠢的錯誤..我wouldv'e縮進它也.. ../.. next tym(y) – AnujaPL

+0

@AnujaPL:比較'if(j = 0)'到'if(j = 0 )',這是同樣的事情,但第二個版本更具可讀性,你可能自己也看到了這個問題。 –