2016-02-21 2 views
1

У меня есть массив, который заполняется либо «.». или «#», и мне нужен способ проверить, равен ли array[y+1][x]#, сделать что-то, если это так, и остановить цикл, в противном случае приращение y. Сначала я написал его без & до lavirint, и это дало мне ошибку, что он не может сравнить указатель и int, который меня запутал, потому что «#» не должен быть int?Проверка того, что значение в двухмерном массиве равно «#»

Проблема является первым условие в цикле никогда не происходит, хотя он должен, и цикл останавливается, когда

y==n 

Может быть, я просто глуп и упускать из вида то, но я бы очень признателен за решением этой проблемы.

char lavirint[500][500]; 

for (int i = 1; i <= n; i++) 
{ 
    for (int j = 1; j <= m; j++) 
    { 
     scanf("%c", &lavirint[i][j]); 
    } 
} 
bool n_povecava = true; 

...

while(n_povecava) 
    { 
     if(&lavirint[y+1][x] == "#" || y==n) 
     { 
      k--; 
      m_povecava = true; 
      n_povecava = false; 
     } 
     else 
      y++; 
    } 
+0

_'for (INT I = 1, г <= п, я ++) '_ Массивы индексируются '0' до 'N-1', где «N» - это размер. –

+0

Не следует использовать _lavirint [y + 1] [x] _ вместо _ & lavirint [y + 1] [x] _ –

ответ

3

"#" строковый литерал типа const char[2] и распадается на const char*.

Вам нужно '#' что персонаж:

if (lavirint[y+1][x] == '#' || ...) 
Смежные вопросы