[ Foro de Pascal ]

Establecer una menu de busqueda segun C.I de la persona en pascal ayuda urgente plz

22-Mar-2020 22:29
Invitado (Angel)
0 Respuestas

Hola, estoy practicando pascal les dejo mi codigo, mi problema se encuentra en el case 3 donde doy la opcion de buscar que basicamente explota el programa xD cuando le pido que busque por CI sin embargo si le digo que busque por .nombre lo encuentra sin problemas
¿como arreglo eso? para que al buscar y la persona coloque la CI aparezca la persona guardada con esa CI?
y porfa si pueden y no es molestia  tambien me gustaria mandar un mensaje tipo error cuando por ejemplo en el campo de cedula me colocaran una letra ¿como aria eso? tipo que si en ves de colocar 12345 me colocan asdas les bote un mensaje de " campo incorrecto intente de nuevo"



program Agenda0b;

var
   gente: array [1..1000] of              { Los datos }
       record
           nombre: string;
           email: string;
           ci: integer;
       end;
   cantidad: integer;       { Cantidad de datos existentes }
   opcion: integer;                      { Opción escogida }
   i: integer;                         { Para bucles "for" }
   textoBuscar: string;                   { Para búsquedas }
   encontrado: boolean;                              { Idem }

{Cuerpo del programa principal}
begin
   cantidad := 0;
   repeat
       WriteLn('Agenda');
       WriteLn;
       WriteLn('1- Añadir una nueva persona');
       WriteLn('2- Ver nombres de todos');
       WriteLn('3- Buscar una persona');
       WriteLn('0- Salir');
       Write('Escoja una opción: ');
       ReadLn(opcion);
       WriteLn;

       case opcion of
           1: { Añadir datos de una persona }
               if cantidad < 1000 then
               begin
                   cantidad := cantidad + 1;
                   WriteLn('Introduciendo la persona ', cantidad);

                   Write('Introduzca el nombre: ');
                   ReadLn(gente[cantidad].nombre);

                   Write('Introduzca el correo electrónico: ');
                   ReadLn(gente[cantidad].email);

                   Write('Introduzca la ci: ');
                   ReadLn(gente[cantidad].ci);

                   WriteLn;
                end
                else
                   WriteLn('Base de datos llena');

           2: { Ver nombres de todos }
               begin
               if cantidad = 0 then
                   WriteLn('No hay datos')
               else
                   for i := 1 to cantidad do
                       WriteLn(i, ' ', gente[i].nombre);
               WriteLn;
               end;

           3: { Buscar una persona }
               begin
               Write('¿Qué texto busca? ');
               ReadLn( textoBuscar );
               encontrado := false;
               for i := 1 to cantidad do
                   if pos (textoBuscar, gente[i].ci) > 0then
                   begin
                       encontrado := true;
                       WriteLn( i,' - Nombre: ', gente[i].nombre,
                         ', Email: ', gente[i].email,
                         ', Nacido en: ', gente[i].ci);
                   end;
               if not encontrado then
                   WriteLn('No se ha encontrado.');
               WriteLn;
               end;

           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 opcion = 0;
end.




(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.)