2014-11-14 82 views
-1

所以我有一個多維數組,5行2列。我現在需要做的是將每個元素輸出爲棋盤字段。此外,我只需要白色的領域。多維數組到棋盤內的C++

#include <iostream> 
using namespace std; 

int main() 
{ 
    int a[5][2] = {{0,0}, {1,2}, {2,4}, {3,6},{4,8}}; 

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

    return 0; 
} 

難道我只是在+1中增加一個循環,以便我逃脫黑色領域?因爲如果是這樣的話,我有點糊塗了哪些元素必須被跳過。

預期輸出:

1 2 3 4 5 6 7 8 9 1 2

整理這樣。

+0

棋盤一般爲8x8。即使你只輸出白色的,你也錯過了很多。 – Yay295 2014-11-14 19:54:11

+0

如果你對增加什麼和什麼時候感到困惑,那麼只能對'(row + col)%2 == 0'(或'!= 0')的字段進行操作,這取決於你想要白色還是黑色細胞。) – 2014-11-14 19:54:18

+0

你能解釋一下這個程序的預期輸出是什麼嗎?這有點不清楚。 – QuestionC 2014-11-14 20:02:37

回答

0

這裏有一個獨特的解決方案(假設第一方爲白色):

#include <iostream> 
using namespace std; 

int main() 
{ 
    int a[5][2] = {{0,0}, {1,2}, {2,4}, {3,6},{4,8}}; 

    for (int i = 0; i < 5; i++) 
    { 
     for (int j = 0; j < 2; j++) 
     { 
     // Check for white square by checking if the sum of the index is "even" 
     if((i + j) % 2 == 0) 
     { 
      cout << a[i][j] << endl; 
     } 
     } 
    } 
    return 0; 
} 

注:這將是很容易改變的情況下,如果第一方是黑色的,但我會離開這個爲你弄清楚:-)

注2:這將是相當容易的把它變成一個函數來處理任何(正)尺寸的棋盤。

+0

我明白了,但是'cout << a [i] <<「\ n」<< a [j] << endl;'有點不對。我在代碼中把它弄糟了。 – dwvaxaz 2014-11-14 20:08:46

+0

@dwvaxaz我錯過了,當我複製並粘貼你的代碼,我現在糾正它。 – Jonathan 2014-11-14 20:19:03