2015-12-08 2 views
0

Кому-то, пожалуйста, помогите найти ошибку в этом коде? Я не могу получить ошибку, &, что дает ошибку Runtime. Я проверил все циклы, используемые для матрицы, но не смог найти ошибку.Ошибка SIGSEGV (Вероятно, Array Index Out Bound)

int n, arr[n][n]; 
    cin>>n; 
    for (i=0; i<n; i++) 
    { 
     for(j=0; j<n; j++) 
     { 
      cin>>arr[i][j]; 
     } 
    } 

    for (i=0; i<n; i++) 
    { 
     for(j=0; j<n; j++) 
     { 
      sum = 0; 
      prev = ne; 
      ne = 0; 

      if(arr[i][j] == 1) 
      { 
       ne = i+j; 
       prev = i+j; 
       sum = ne - prev; 
       if(sum<0) 
        sum=-sum; 
       steps+=sum; 
      }   
      c++; 
     } 
    } 
+0

Где вы объявляете 'arr' ? – Zeta

+0

@Zeta Проверьте код, я добавил его сейчас. –

+1

Вы имеете в виду 'int n, arr [n] [n];' ?? –

ответ

1

Вы используете переменную n для создания массива без его инициализации. You must always use a constant for initializing a static array

сделать что-то вроде этого:

const int n = SOME_VALUE; 
int arr[n][n]; 
//rest remains same 

также, вы должны использовать < п вместо < = п как отметил Джон.

если вы хотите динамический массив, то использование STL vector будет лучше.

+1

Даже если это был инициализирован, он получит ошибку: 'i <= n' должен быть' i nouney

+0

Я инициализировал его, значение берется у пользователя в другой части кода. –

+0

@KiranMalvi, который может быть, но 'int n, arr [n] [n];' предлагает иначе. –

0

Вы не инициализацией n переменных, а также ваш цикл должен быть

for (i=0; i<n; i++) 

массива индексов в C++ начинается с нуля

Same для J петли

+1

Ошибки Оби-Вана , Star Wars еще нет? –

+0

Ошибки Оби-Вана? Хмм, я знаю выражения йоды http://www.devsanon.com/2015/11/usefulness-of-yoda-expressions-in.html , но ошибки Оби-Вана? никогда не слышал об этих –

+1

'OffBY-ONE' ... :) –

Смежные вопросы