2013-01-15 53 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