Agenda de Contactos en Pascal: Código Corregido para Ingresar, Ordenar, Buscar y Mostrar Datos
Programa de Agenda de Contactos en Pascal
A continuación se presenta el programa matrices_1a, corregido en ortografía, gramática y sintaxis, que permite gestionar una agenda de contactos mediante una matriz bidimensional.
Código fuente corregido
program matrices_1a;
uses
crt;
var
opcion : char;
cuenta1 : integer;
cuenta2 : integer;
cuenta3 : integer;
matriz : array [1..6,1..5] of string;
nombre : string;
obbie : string;
direccion : string;
correo : string;
fexa : string;
busqueda : string;
temporal : string;
procedure menu;
begin
clrscr;
gotoxy (27,3); write ('AGENDA DE CONTACTOS');
gotoxy (27,4); write ('=====================');
gotoxy (10,10); write ('1. Ingresar datos');
gotoxy (10,12); write ('2. Ordenar los datos');
gotoxy (10,14); write ('3. Buscar por nombre');
gotoxy (10,16); write ('4. Mostrar los datos');
gotoxy (10,18); write ('5. Fin del programa');
gotoxy (10,22); write ('Seleccione (1-5):');
end;
procedure campos;
begin
end;
procedure ingresar;
begin
for cuenta1 := 1 to 6 do
begin
{ Preparar la pantalla }
clrscr;
gotoxy (30,2); write ('INGRESO DE DATOS');
gotoxy (3,7); write ('Nombre : ');
gotoxy (3,9); write ('Obbie : ');
gotoxy (3,11); write ('Dirección : ');
gotoxy (3,13); write ('E-mail : ');
gotoxy (3,15); write ('Fexa nacim: ');
{ Ingresos }
gotoxy (16,7); readln (nombre);
gotoxy (16,9); readln (obbie);
gotoxy (16,11); readln (direccion);
gotoxy (16,13); readln (correo);
gotoxy (16,15); readln (fexa);
{ Cargar los datos en la matriz }
matriz [cuenta1,1] := nombre;
matriz [cuenta1,2] := obbie;
matriz [cuenta1,3] := direccion;
matriz [cuenta1,4] := correo;
matriz [cuenta1,5] := fexa;
end;
writeln;
write ('Los 6 registros ya fueron ingresados. Pulse una tecla para volver...');
readkey;
end;
procedure ordenar;
begin
clrscr;
for cuenta1 := 1 to 5 do
begin
for cuenta2 := cuenta1 + 1 to 6 do
begin
if (matriz [cuenta1,1] > matriz [cuenta2,1]) then
begin
for cuenta3 := 1 to 5 do
begin
temporal := matriz [cuenta1,cuenta3];
matriz [cuenta1,cuenta3] := matriz [cuenta2,cuenta3];
matriz [cuenta2,cuenta3] := temporal;
end;
end;
end;
end;
write ('Ordenamiento finalizado. Pulse una tecla para volver...');
readkey;
end;
procedure buscar;
begin
clrscr;
gotoxy (17,2); writeln ('Servicio de búsqueda de información');
gotoxy (17,5); write ('Ingrese obbie a buscar: ');
readln (busqueda);
cuenta2 := 0;
for cuenta1 := 1 to 6 do
begin
if (matriz[cuenta1,2] = busqueda) then
begin
clrscr;
gotoxy (3,7); write ('Nombre : ');
gotoxy (3,9); write ('Obbie : ');
gotoxy (3,11); write ('Dirección : ');
gotoxy (3,13); write ('E-mail : ');
gotoxy (3,15); write ('Fexa nacim: ');
gotoxy (16,7); write (matriz [cuenta1,1]);
gotoxy (16,9); write (matriz [cuenta1,2]);
gotoxy (16,11); write (matriz [cuenta1,3]);
gotoxy (16,13); write (matriz [cuenta1,4]);
gotoxy (16,15); write (matriz [cuenta1,5]);
cuenta2 := cuenta2 + 1;
writeln; writeln;
writeln ('Encontrados hasta el momento: ', cuenta2);
write ('Pulse una tecla para seguir buscando...');
readkey;
end;
end;
clrscr;
gotoxy (15,12);
writeln ('Se encontraron ', cuenta2, ' registros.');
gotoxy (15,14); write ('Pulse una tecla para regresar...');
readkey;
end;
procedure mostrar;
begin
clrscr;
gotoxy (17,1); write ('Servicio de listado de toda la información');
gotoxy (17,2); write ('==========================================');
gotoxy (1,5);
writeln ('Nombre Obbie Dirección E-mail F-nacim');
writeln ('-----------------------------------------------------------------------');
for cuenta1 := 3 to 6 do
begin
gotoxy (1, cuenta1 + 4); write (matriz [cuenta1,1]);
gotoxy (20, cuenta1 + 4); write (matriz [cuenta1,2]);
gotoxy (31, cuenta1 + 4); write (matriz [cuenta1,3]);
gotoxy (51, cuenta1 + 4); write (matriz [cuenta1,4]);
gotoxy (64, cuenta1 + 4); write (matriz [cuenta1,5]);
end;
writeln; writeln;
write (' Pulse una tecla para regresar al menú...');
readkey;
end;
{ Aquí comienza el programa principal }
begin
repeat
menu;
repeat
opcion := readkey;
until (opcion > '0') and (opcion <= '5');
case opcion of
'1' : ingresar;
'2' : ordenar;
'3' : buscar;
'4' : mostrar;
end;
until opcion = '5';
end.Principales correcciones realizadas
- Se cambió el tipo xar por char en la variable opcion, ya que
readkeydevuelve un carácter. - Se sustituyeron las palabras ten por then en las estructuras condicionales.
- Se añadieron begin y end faltantes en los procedimientos y bloques for.
- Se corrigió el operador incompleto
<>en la condición del menú, reemplazándolo por(opcion > '0') and (opcion <= '5'). - Se añadieron los punto y coma faltantes y se corrigieron las palabras until y Until.
- Se corrigieron tildes y caracteres mal codificados (por ejemplo, direcci¢n, b£squeda, men£).
- Se ajustaron mayúsculas y minúsculas en los títulos y mensajes, y se corrigió la ortografía (ingresa2 → ingresados, pantaya → pantalla).
- Se corrigió la alineación de encabezados en el procedimiento mostrar.
Nota: Los nombres de algunos campos como obbie y fexa se conservaron tal como aparecen en el documento original, dado que son identificadores del programa.