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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  [ADA] Error inexplicable en inserción de datos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [ADA] Error inexplicable en inserción de datos  (Leído 1,820 veces)
Shurhand

Desconectado Desconectado

Mensajes: 18


Ver Perfil
[ADA] Error inexplicable en inserción de datos
« en: 18 Junio 2010, 10:33 am »

Hola amigos:

Antes de enseñároslo os lo cuento: Mi tablero es un array de enteros. Esos enteros representan barcos. Son barcos del juego "hundir la flota" leidos desde un fichero como un par de cordenadas A1B2.

Bien, pues me percaté de que los barcos no se estaban agregando bien al array. Así que decidí poner un Put para ver lo que salía y poder localizar el error.

Primero lo hice con el procedimiento que muestra por pantalla el array. Nada. Después seguí con las lecturas de datos y por último, por el procedimiento que agrega a los barcos a los barcos a la matriz. Solamente en este último caso ocurrió algo sorprendente:

Cree un Put que me dijese por qée barco iba cada vez que lo agregaba. Lo podeis ver en azul comentado en esta imagen: img337.imageshack.us/img337/1858/errord.png

También podeis apreciar la en esa imagen: a partir del barco 16 no se agrega ninguno mas.

Pues ahora mirad lo que pasa por agregar un Put en ese mismo procedimiento: img191.imageshack.us/img191/6537/error2j.png

¿Veis la salida? Ahora ya muestra 21 barcos. Bueno, casi 21 porque si os fijais bien, no aparece por ningún lado el número 17.

¿Cómo es posible que un proceso iterativo se salte un número 17?
¿Cómo es posible que un programa cambie de comportamiento con tan solamente agregar un Put? Un Put escribe en el buffer standar de salida, así que... ¿Qué tiene que ver ese Put con una salida completamente distinta, es decir, la introducción de datos en la Matriz?

Os copio el procedimiento por si alguno me puede ayudar.

ConvertirCaracter recibe chars y devuelve integers: así opero mejor por la matriz y sus posiciones.
Casi llena comprueba que la matriz no esté llena para las coordenadas que reciba. De este modo, un barco no puede "pisar" cualquier casilla de otro.
totalbarco es un acumulador, para pintar barcos en el tablero.
CantidadBarcos es una constante integer de valor 21. Es el máximo número de barcos permitidos.

Código:
procedure InsertarBarco(tableroInsertar: in out TipoTablero; a, b, c, d: in out Character; totalbarco: in out Integer) is
m, n, o, p: Integer;
llenoInsertar: Boolean;
begin
m := ConvertirCaracter(a);
n := ConvertirCaracter(b);
o := ConvertirCaracter(c);
p := ConvertirCaracter(d);

OrdenCoord(m, n, o, p);
CasillaLlena(tableroInsertar, m, n, o, p, llenoInsertar);
totalbarco := totalbarco + 1;
if not(llenoInsertar) then
for i in m..o loop
for j in n..p loop
-- if totalbarco <= CantidadBarcos then
-- tableroInsertar(j,i):=totalbarco;
Put(totalbarco);
-- end if;
end loop;
end loop;
end if;
end;


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ordenamientos Burbuja, Insercion y Shell en C++
Programación C/C++
Norochii 0 4,595 Último mensaje 25 Mayo 2011, 18:40 pm
por Norochii
Problema a la hora de crear procedure de insercion de datos en oracle
Bases de Datos
guass19 2 3,579 Último mensaje 20 Junio 2012, 09:04 am
por guass19
evitar inserción de datos al recargar paginas
PHP
kakashi20 2 1,679 Último mensaje 17 Mayo 2013, 19:07 pm
por Brida
Inserción de datos ABB con archivos
Programación C/C++
eduardo1012 1 1,733 Último mensaje 27 Octubre 2016, 21:52 pm
por eduardo1012
Inserción de datos en formulario
PHP
Arm144 2 2,011 Último mensaje 11 Noviembre 2016, 21:52 pm
por Arm144
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines