2013-03-20 121 views
0

我試圖完成使用嵌套的循環以下(C語言):嵌套的循環邏輯

a[0] = b[0][0]; 
    a[1] = b[1][0]; 
    a[2] = b[1][1]; 
    a[3] = b[2][0]; 
    a[4] = b[2][1]; 
    a[5] = b[2][2]; 
    a[6] = b[3][0]; 
    a[7] = b[3][1]; 
    a[8] = b[3][2]; 
    a[9] = b[3][3]; 

我有這樣的:

for (j=0; j<3; ++j) 
     for (k=0; k<j; ++k) 
      a[i] = b[j][k]; 

我想我需要這樣的:

for (i=0; i<9; ++i) 

但我在解決問題的地方遇到問題。任何有關邏輯的幫助表示讚賞。謝謝。

回答

2

兩個定位。

  • 包括計數器
  • 讓您綁定的檢查包括

畫報:

int i=0; 
for (j = 0; j <= 3; ++j) 
    for (k = 0; k <= j; ++k) 
     a[i++] = b[j][k]; 

Ideone

+0

好眼!我已經錯過了邊界檢查... – Floris 2013-03-20 04:17:48

+0

這沒有辦法。非常感謝! – Ben 2013-03-20 04:38:41

1

你太親近了!這應做到:

i=0; 
for (j=0; j<3; ++j) 
    for (k=0; k<j; ++k) 
     a[i++] = b[j][k]; 
+0

你是對的。我的解決方案錯了。 – joce 2013-03-20 04:15:30

0

你只需要增加嵌套的內部變量循環:

int i = 0; 
for (j=0; j<3; ++j) 
    for (k=0; k<j; ++k) 
     a[i++] = b[j][k];