2011-12-18 140 views
1

大家好我已經是試圖整個上午要做到這一點,但我似乎無法使其工作,是輸出環路上一個多維數組,讓我用一個非多維一個更好的解釋:C++:循環輸出多維數組?

int j; 
int line[4] = {1, 2, 3, 4,}; 


    for(j = 0; j < 4; j ++) 
    { 

     cout << line[j] << endl; 

    } 

這工作,但在多維數組來了頭痛:

int i, j; 
int line[2][2]; 

line[0][0] = 99; 
line[0][1] = 98; 
line[1][0] = 97; 
line[1][1] = 96; 

i = 0; 
j = 0; 

for(j; j <= 1; j ++) 
{ 
    for(i; i <= j; i ++) 
    { 
     cout << line[i][j] << endl; 
    } 
} 

有人可以幫助我嗎?

回答

0
for(int j = 0; j < 2; j++) 
{ 
    for(int i = 0; i < 2; i++) 
    { 
     std::cout << line[j][i] << endl; 
    } 
} 

這是怎麼回事:

所以,當你進入循環j = 0。您進入內環路i將開始0,去1j將保持同樣的0,那麼一旦i = 2(因爲2不是< 2將退出內部循環,並繼續與第一環,現在j會等於1,它會重新進入內環路和i將在0和增量再次開始1。然後,一旦j = 2(再次,因爲2不< 2)將退出第一個循環。

比方追查你得到這樣的順序:

[0][0] 
[0][1] 
[1][0] 
[1][1] 

爲什麼驗證碼:

for(j; j <= 1; j ++) 
{ 
    for(i; i <= j; i ++) 
    { 
     cout << line[i][j] << endl; 
    } 
} 

將無法​​正常工作。

所以你輸入第一個循環,j = 0。你輸入第二個循環,i = 0。它貫穿內循環一次,並且您打印line[0][0],然後i = 1第二次,是1 <= 0?所以它退出內部循環並進入第一個循環。 j=1現在。進入第二個循環,您沒有將i重新初始化爲0,因此i仍然等於1。現在您已打印line[1][1],增量爲i,您將獲得i = 2。 2 < = 1?否。中止內部循環。 j等於22 <= 1無中止循環。你成功地打印:

[0][0] 
[1][1] 
+0

謝謝,但它仍然沒有輸出數組的其他部分 – Leandro 2011-12-18 17:44:26

+0

@LeandroTheBest要麼你沒有提供你的真實代碼,或者你沒有準確地粘貼匿名代碼,或者你在說謊:) – 2011-12-18 17:45:30

+0

@LeandroTheBest:你能顯示你的所有代碼? – Dair 2011-12-18 17:49:06

0

在內環狀態下的修正!和交換指標變量

for(j=0; j <= 1; j ++) 
{ 
    for(i=0; i <= 1; i ++) 
    { 
     cout << line[j][i] << endl; 
    } 
} 

編輯的代碼的^^

+0

@LeandroTheBest:是啊,錯過了'爲(I = 0'在內環...現在工作。 – Pheonix 2011-12-18 17:47:47

+0

這與anon的代碼略有不同,但也可以工作 但它爲什麼不能是i <= j;嗯 – Leandro 2011-12-18 17:58:28

1

很好地打印尺寸n x m的二維數組,使用

for(int i = 0; i < n; ++i) 
{ 
    for(int j = 0; j < m; ++j) 
    { 
     cout << a[i][j] << " "; 
    } 
    cout << endl; 
} 
+0

嗨,我似乎沒有得到它,nm的值是相同的x或3他們是相同的值 – Leandro 2011-12-18 17:43:32

+0

@LeandroTheBest在你的例子中,你有一個大小爲2x2的矩陣所以,對於你的特殊情況,n是2,m是2。 – 2011-12-18 17:44:19