[ Foro de Pascal ]

Ayuda dev pascal con lista animales encontrados y perdidos

26-Apr-2020 13:55
sara fernandez guinea
1 Respuestas

en este programa tengo que hacer que se pueda introducir tanto animales encontrados con sus respectivos campos y los perdidos. A su vez también tiene que tiene la opción de mostrar las respectivas listas de los animales perdidos y encontrados que se han añadido,(e listas separadas). sin embargo al introducir mas de un animal en cada una delas lisas al darle para  que aparezca la lista no se guarda y aparece en ambas listas e ultimo animal metido. ¿Podrían ayudarme? Muchas gracias de antemano.


PROGRAM Animales ;
USES
  crt , sysutils;
CONST
   MAX_DATOS = 10 ;

TYPE
   ts16 = string[16] ;
   tsNombres = string[32] ;

   {trgAnimal = RECORD
       lCodigo   : longint ;
       sTipo     : ts16 ;
       sRaza     : ts16 ;
       iTamanio  : integer ;

       END;


   trgPersona = RECORD
       sNombre   : tsNombres ;
       sTelefono : ts16 ;


       END;}

   trgEncontradosPerdidos = RECORD
       lCodigo   : longint ;
       sTipo     : ts16 ;
       sRaza     : ts16 ;
       iTamanio  : integer ;
       sNombre   : tsNombres ;
       sTelefono : ts16 ;
       rFecha    : real ;

       END;

   trgLocalizados = RECORD
       rAanimal          :trgEncontradosPerdidos ;
       rgPersonaEncotro  :trgEncontradosPerdidos ;
       rgPersonaPerdio   :trgEncontradosPerdidos ;
       rFecha            :real ;

       END;

  {encontrados = ARRAY [1..MAX_DATOS] OF trgEncontradosPerdidos ;
  perdidos = ARRAY [1..MAX_DATOS] OF trgEncontradosPerdidos ;
  localizados = ARRAY [1..MAX_DATOS] OF trgLocalizados ;}

VAR
  encontrados : ARRAY [1..MAX_DATOS] OF trgEncontradosPerdidos ;
  perdidos : ARRAY [1..MAX_DATOS] OF trgEncontradosPerdidos ;
  localizados : ARRAY [1..MAX_DATOS] OF trgLocalizados ;


  { animal : ARRAY [1..MAX_DATOS] OF trgAnimal ;
   persona : ARRAY [1..MAX_DATOS] OF trgPersona ;}


   {argEncontrados : targEncontrados ;
   argPerdidos : targPerdidos ;
   argLozalizados : targLocalizados ;}

   cOpcion : Char ;
   cantidadencontrados: Integer ;
   cantidadperdidos:integer;
   terminado : Boolean ;

function MostrarMenu: char;
var
 cOpcion: char;
begin
   WriteLn('REGISTRO');
   WriteLn;
   WriteLn('1- Añadir animal encontrado');
   WriteLn('2- Lista animales encontrados');
   WriteLn('3- Añadir animal perdido');
   WriteLn('4- Lista animales perdidos');
   WriteLn('5- Lista animales localzados');
   WriteLn('6- Buscar datos de un animal localizado');
   WriteLn('0- Terminar');
   writeln;

   write ('pulsa la tecla de la opcion pertinente: ');

   repeat
   cOpcion:=ReadKey

   until ('0'<=cOpcion)and (cOpcion<='6');
   writeln (cOpcion);
   writeln;

   mostrarmenu:=copcion;


end;

PROCEDURE AnimalEncontrado ;
BEGIN
 IF (cantidadencontrados < MAX_DATOS) THEN
   BEGIN
    inc (cantidadencontrados) ;
    WriteLn ('Introduciendo el animal' , cantidadencontrados) ;

    Write ('Codigo: ':10) ;
    Readln (encontrados[cantidadencontrados].lCodigo) ;

    Write ('Tipo: ':10) ;
    Readln (encontrados[cantidadencontrados].sTipo) ;

    Write ('Raza: ':10) ;
    Readln (encontrados[cantidadencontrados].sRaza) ;

    Write ('Tamanyo: ':10) ;
    Readln (encontrados[cantidadencontrados].iTamanio) ;

    Write ('Nombre de la persona que lo encontro: ':10) ;
    Readln (encontrados[cantidadencontrados].sNombre) ;

    Write ('Telefono: ':10) ;
    ReadLn (encontrados[cantidadencontrados].sTelefono) ;

    Write ('Fecha: ':10) ;
    ReadLn (encontrados[cantidadencontrados].rFecha) ;


    writeln;
    writeln;
   END
  ELSE
    WriteLn ('Base de datos llena':20) ;
END;



PROCEDURE MostrarListaEncontrados  ;
VAR
  i : Integer ;
BEGIN
  IF cantidadencontrados = 0 THEN
     WriteLn ('No hay datos':20)
  ELSE
     FOR i := 1 TO cantidadencontrados DO
         WriteLn  (i, ' ', encontrados[i].lCodigo);
         WriteLn  (i, ' ', encontrados[i].stipo);
         WriteLn  (i, ' ', encontrados[i].sraza);
         WriteLn  (i, ' ', encontrados[i].itamanio);
         WriteLn  (i, ' ', encontrados[i].snombre);
         WriteLn  (i, ' ', encontrados[i].stelefono);
         WriteLn  (i, ' ', encontrados[i].rfecha);

  WriteLn ;
END;

PROCEDURE AnimalPerdido ;
BEGIN
  IF (cantidadperdidos < MAX_DATOS) THEN
   BEGIN
    inc (cantidadperdidos) ;
    WriteLn ('Introduciendo el animal':10 , cantidadperdidos) ;

    Write ('Codigo: ':10) ;
    Readln (perdidos[cantidadperdidos].lCodigo) ;

    Write ('Tipo: ':10) ;
    Readln (perdidos[cantidadperdidos].sTipo) ;

    Write ('Raza: ':10) ;
    Readln (perdidos[cantidadperdidos].sRaza) ;

    Write ('Tamanyo: ':10) ;
    Readln (perdidos[cantidadperdidos].iTamanio) ;

    Write ('Nombre de la persona que lo encontro: ':10) ;
    Readln (perdidos[cantidadperdidos].sNombre) ;

    Write ('Telefono: ':10) ;
    ReadLn (perdidos[cantidadperdidos].sTelefono) ;

    Write ('Fecha: ':10) ;
    ReadLn (perdidos[cantidadperdidos].rFecha) ;

    writeln;
    writeln;


   END
  ELSE
    WriteLn ('Base de datos llena':20) ;
END;

PROCEDURE MostrarListaPerdidos ;
VAR
  i : Integer ;
BEGIN
  IF cantidadperdidos = 0 THEN
     WriteLn ('No hay datos':20)
  ELSE
     FOR i := 1 TO cantidadperdidos DO

         WriteLn  (i, ' ', perdidos[i].lCodigo);
         WriteLn  (i, ' ', perdidos[i].stipo);
         WriteLn  (i, ' ', perdidos[i].sraza);
         WriteLn  (i, ' ', perdidos[i].itamanio);
         WriteLn  (i, ' ', perdidos[i].snombre);
         WriteLn  (i, ' ', perdidos[i].stelefono);
         WriteLn  (i, ' ', perdidos[i].rfecha);

  WriteLn ;
END;






BEGIN
  terminado := false;
  cantidadperdidos := 0;
  cantidadencontrados:=0;
  repeat
      cOpcion := MostrarMenu;
       case cOpcion of
           '1': AnimalEncontrado ;

           '2': MostrarListaEncontrados ;

           '3': AnimalPerdido ;

           '4': MostrarListaPerdidos ;

           '0': { Salir de la aplicación }
               begin
               WriteLn;
               WriteLn('Saliendo...');
               WriteLn;
               end;
            else
               begin
               WriteLn;
               WriteLn('Opción incorrecta!');
               WriteLn;
               end;
       end;  { Fin de "case" }

  until terminado ;

END. { PROGRAMAREN BUKAERA - FIN del PROGRAMA }


 


26-Apr-2020 14:01
Nacho Cabanes (+64)

En los "for" de mostrar te faltan crear un bloque begin - end, so que sólo repites para el código.

Por cierto, has puesto la consulta tres veces, y una de ellas en el foro de Java. Doy por sentado que tengo tu permiso para borrar las dos anteriores.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)