elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  desbordamiento de arreglos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: desbordamiento de arreglos  (Leído 2,225 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
desbordamiento de arreglos
« en: 24 Noviembre 2013, 01:41 am »

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?

Código
  1. void verificarCelda(char **arreglo,int filaInicial,int columnaInicial)
  2. {
  3.    if(arreglo[filaInicial + 2][columnaInicial - 1] != -1)
  4.       printf("Celda valida");
  5. }
  6.  


En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: desbordamiento de arreglos
« Respuesta #1 en: 24 Noviembre 2013, 15:37 pm »

Código
  1. int VerificarCelda(int total_filas, int total_columnas, int fila, int col, int x)
  2. {
  3.     if (fila+x<total_filas && col+x<total_columnas) return 1;
  4.     return 0;
  5. }

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.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: desbordamiento de arreglos
« Respuesta #2 en: 24 Noviembre 2013, 17:25 pm »

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:
Código
  1. int VerificarCelda(int total_filas, int total_columnas, int fila, int col, int x)
  2. {
  3.   return  fila + x < total_filas && col + x < total_columnas;
  4. }

Un saludo
En línea

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda Desbordamiento
Programación Visual Basic
ELGRANSOLRAC 0 1,008 Último mensaje 8 Junio 2006, 23:33 pm
por ELGRANSOLRAC
Desbordamiento
Programación Visual Basic
LeandroA 4 3,257 Último mensaje 1 Noviembre 2009, 06:22 am
por LeandroA
Desbordamiento de enteros en PHP 5.x
Noticias
wolfbcn 0 1,919 Último mensaje 29 Abril 2011, 13:47 pm
por wolfbcn
Desbordamiento de pila moderno
Análisis y Diseño de Malware
Usuario887 2 8,050 Último mensaje 9 Julio 2020, 20:10 pm
por Usuario887
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines