2013-01-15 79 views
0

該程序假設需要一個size數量的成對數字,這些數字是2D布爾數組中的座標。觸發的每個座標都將值切換爲TRUE。出於某種原因,我在最後一行以及最後一行的最後一個空格中都有錯誤。有任何想法嗎?布爾二維數組初始化錯誤C++

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 


int main(){ 
    const int size = 10; 
    int *x = new int [size]; 
    int *y = new int [size]; 
    bool table[size][size] = {{false}}; 
    for(int i = 1 ; i <= size; i++){ 
     cin >> x[i] >> y[i]; 
     if(x[i] <= size && y[i] <= size){ 
      table[x[i]][y[i]] = true; 
     } else{ 
      cout << "invalid input \n"; 
      i--; 
     } 
    } 


    for(int a = 1; a <= size; a++){ 
     for(int b= 1; b <= size; b++){ 
      cout << table[a][b] << " "; 
     } 
     cout << "\n"; 
    } 
    return 0; 
} 
+0

爲什麼你從1迭代?應該從C中的0開始。 – yattering

+3

數組從0開始... –

+0

是的,我明白,但我不能使用0 ...它們是終止鍵。所以我只與從1開始的數組工作,而不是使它'我

回答

3

對於大小爲N的數組,數組索引從0到N-1。您正在寫入超出數組範圍。你的循環應該像

for(int i = 0; i < size; ++i) { ..... } 
+0

是的,我明白,但我不能使用0s ...他們是終止鍵。所以我只使用從1開始的數組,而不是使它成爲'i

+0

@GalAppelbaum至少,你應該避免循環到'size'。雖然我不明白這些「終止密鑰」如何工作。什麼是不使用整行和整列的數組? – juanchopanza