desbordamiento de arreglos

Iniciado por m@o_614, 24 Noviembre 2013, 01:41 AM

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

m@o_614

Saludos, si tengo una matriz en C, en la cual tengo que posicionarme en alguna de las casillas( le pido la fila y la columna al usuario), y despues a apartir de esa casilla quiero moverme x numero de celdas en el eje de las filas y x numero de celdas en el eje de las columnas, ¿Cual es a manera correcta de validar que la nueva posicion en la que me encuentro es una celda valida para que no se desborde el arreglo???,podria ser algo como esto?

void verificarCelda(char **arreglo,int filaInicial,int columnaInicial)
{
    if(arreglo[filaInicial + 2][columnaInicial - 1] != -1)
       printf("Celda valida");
}

xiruko

int VerificarCelda(int total_filas, int total_columnas, int fila, int col, int x)
{
     if (fila+x<total_filas && col+x<total_columnas) return 1;
     return 0;
}


Donde total_filas y total_columnas son las dimensiones de la matriz, fila y col son la fila y columna donde se encuentra actualmente el usuario y x son el numero de filas y columnas que se mueve. Si devuelve 1 es que la nueva posición es correcta y 0 en caso contrario.

Saludos.

rir3760

Ya que el resultado de los operadores relacionales y lógicos es uno si se cumple la condición y cero en caso contrario puedes reducir la función a:
int VerificarCelda(int total_filas, int total_columnas, int fila, int col, int x)
{
   return  fila + x < total_filas && col + x < total_columnas;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language