Agenda de Contactos en Pascal: Código Corregido para Ingresar, Ordenar, Buscar y Mostrar Datos

Inglés6,42 KB

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 readkey devuelve 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.

Descargar

PDF Word HTML