Problema con un if ( violación de segmentos en tablas bidimiensionales )

Iniciado por Firefoxes, 8 Enero 2018, 18:15 PM

0 Miembros y 1 Visitante están viendo este tema.

Firefoxes

Buenas estoy haciendo una función para un programa que resuelve un laberinto, la función en concreto lo que hace es ya con el laberinto resuelto cambia los caracteres que marcan el camino por '-', '|' o '+' para que sea mas visual.

Acabo de empezar a escribir el código de dicha función e intentando hacer pruebas me sale violación de segmento que ocurre en esa función en concreto (el resto del código está bien)

Me gustaría saber que es lo que falla en la condición para que de fallo.
Creo que el problema es que se sale de la tabla pero no se solucionarlo

*En la función todavía faltan muchas cosas*
void camino(char **tabla, int tamv, int tamh)
{
  int i;
  int j;

  for(i=0; i<tamv; i++)
    {
      for(j=0; j<tamh; j++)
{
  //Para colocar '-' no debe haber ni arriba ni abajo '#', 'o' o '|'
  if(tabla[i+1][j]!='o' && tabla[i+1][j]!='#' && tabla[i+1][j]!='|' && tabla[i-1][j]!='o' && tabla[i-1][j]!='#' && tabla[i-1][j]!='|')
    tabla[i][j]='-';
}
    }
}

MAFUS

A primera vista veo que lees fuera de los límites de la tabla. Aunque estés en la fila 0 intentas leer lo que hay por encima de ella. Pasa algo parecido para la última porque intentas leer lo que hay por debajo.