2015-04-01 55 views
0

所以我不明白我在做什麼錯誤(語法錯誤,嵌套循環,或者只是愚蠢的錯誤??)。我的編譯器要求我按任意鍵繼續。 。 。你能指出我在正確的方向?如何以相反的順序訪問數組中的元素?

#include "stdafx.h" 
#include <iostream> 

using namespace std; 

int main() 
{ 
    const int MAX_ROWS = 2; 
    const int MAX_COLS = 4; 

    int BigSmall[MAX_ROWS][MAX_COLS] = 
    { 
     {1,3,5,7}, 
     {2,4,6,8} 
    }; 

    for(int Row = 2; Row > MAX_ROWS; Row--) 
    { 
     for(int Column = 4; Column > MAX_COLS; Column--) 
     { 
      cout << "Integer[" << Row << "][" << Column << "] = " << BigSmall[Row][Column] << endl; 
     } 
    } 
     return 0; 
} 
+0

這是編譯器有問題;我想這是執行。在for循環中,測試在循環的開始處執行:從一開始,'Row'不驗證'Row> MAX_ROWS',所以外循環從不執行。 – pascal 2015-04-01 20:10:35

+0

你想從標題「倒序」中得到什麼,就像'for(int Row = MAX_ROWS; Row - > 0;)'。 – pascal 2015-04-01 20:12:18

回答

2
for(int Row = 2; Row > MAX_ROWS; Row--) 

MAX_ROWS都等於2,你想要的是Row > 0

同去的列循環

1

語法錯誤,嵌套循環,或只是愚蠢的錯誤?

後來:您四啓動內循環,並同時繼續Column以上四強。這與從不開始它是一樣的。外循環有相同的問題。

你應該開始您在SIZE-1(即MAX_ROWS - 1MAX_COLS - 1)循環,並繼續,而你是高於或處於零:

for(int Row = MAX_ROWS-1; Row >= 0 ; Row--) { 
    for(int Column = MAX_COLS - 1; Column >= 0 ; Column--) { 
     cout << "Integer[" << Row << "][" << Column << "] = " << BigSmall[Row][Column] << endl; 
    } 
} 

Demo.

0

你的意思

for(int Row = MAX_ROWS - 1; Row >=0 ; Row--) 
{ 
    for(int Column = MAX_COLS - 1; Column >= 0 ; Column--) 
    { 
     cout << "Integer[" << Row << "][" << Column << "] = " << BigSmall[Row][Column] << endl; 
    } 
} 

+0

嗯..好吧它現在有效。你會解釋爲什麼這樣做? – Ham 2015-04-02 23:27:31

+0

那麼,它只是寫什麼。例如。對於行,你有'MAX_ROWS'(2)其中數字0和1(當我們從0開始計數)。要以相反的順序查看它們,我們從MAX_ROWS-1開始(即1),並在0處遞減循環計數器。 – 2015-04-03 05:37:34

+0

好的,我明白了。謝謝你幫助我,我真的很感激! – Ham 2015-04-03 06:50:49