Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Firefoxes en 8 Enero 2018, 18:15 pm



Título: Problema con un if ( violación de segmentos en tablas bidimiensionales )
Publicado por: Firefoxes en 8 Enero 2018, 18:15 pm
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*
Código:
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]='-';
}
    }
}


Título: Re: Problema con un if ( violación de segmentos en tablas bidimiensionales )
Publicado por: MAFUS en 8 Enero 2018, 19:32 pm
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.