AYUDA.PROCEDIMIENTO PARA DAR DE ALTA. PASCAL

Iniciado por manu3742, 25 Abril 2011, 11:46 AM

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

manu3742

hola de nuevo y gracias por leer este mensaje y por la ayuda que me podais dar.

Tengo que hacer un procedimiento para dar de alta libros, sobre una tabla de 50 libros o más. Las altas se tienen que hacer de una en una. NO todas de golpe.

Con esto el algoritmo sería:

Todas las posiciones de la tabla en las que el campo ALTA sea TRUE, es que estan ocupadas.

Todas en las que ALTA sea FALSE estan libre.

buscar una posición libre.

ALGORITMO:

encontrado=false (cuando sea true es que he encontrado la posicion)
posicionlibre=1 (empiezo a buscar por la uno)
indice=1 (para ir recorriendo la tabla)
fin=false (he llegado al final de la tabla)
mientras encontrado sea false y fin sea false hacer (salgo del bucle si
encuentro una posición libre o llego al final de la tabla)
   si tabla[indice].alta es false
en caso de que la posicion indice esté libre (el campo alta es false)
      encontrado=true y posicionlibre=indice
   else
      if(indice es distinto de tamcoleccion) es decir si todavía no he
llegado al final
         indice=indice+1
      else
          fin=true (he llegado al final y lo indico con fin)
fin mientras
salgo del bucle si he llegado al final sin encontrar posicion libre, en
ese caso fin vale true o si he encontrado una posicion libre, en ese caso
encontrado vale true
entonces ya se lo que tengo que hacer en cada caso:
si fin=true
  mostrar mensaje "No hay sitio en la tabla para más libros"
si encontrado=true
  leer datos del libro y meterlos en la posición posicionlibre

hasta dónde yo comprendo he realizado el siguiente código:

Código (pascal) [Seleccionar]

Procedure alta_libro(biblioteca: Tbiblioteca; longitud: integer);

var

i : integer;
encontrado: boolean;
posicionlibre : real;
indice: real;
fin : boolean;

begin

While(encontrado = false ) AND (fin = false) do

   Begin

     while (encontrado = false) and (fin = false) do

        begin
         
           if bilbioteca[i].alta = false then
           encontrado = true;
           posicionlibre = indice;

           else

           if indice <> TAMBIBLIOTECA THEN
           indice = indice +1;

           else

             fin = true;
           end;

     end;

     begin
       
       if fin = true then
       writel('No hay sitio en la tabla para los libros');
       if encontrado = true then

leer datos del libro y meterlos en la posición libre.



Necesito saber si el código esta bien interpretado y cual me falta es lo último que me queda y la primera vez que hago un procedimiento igual.

un saludo y muchísimas gracias en lo que me podais ayudar.

Khronos14


manu3742

puedes eliminar mis peticiones y mi cuenta?
Gracias,  adios

d(-_-)b

Cita de: manu3742 en 25 Abril 2011, 16:13 PM
puedes eliminar mis peticiones y mi cuenta?

De verdad quieres hacer eso? Ve a tu perfil que por ahi tienes tu opcion.

saludos...
Max 400; caracteres restantes: 366