Está en la página 1de 3

with Ada.Integer_Text_IO, Ada.Text_IO, Ada.

Strings;
use Ada.Integer_Text_IO, Ada.Text_IO, Ada.Strings;

procedure Main is

type Contacto is
record
Nombre : String(1..6);
Telefono : String(1..9);
Email : String(1..16);
end record;

MAX_CONTACTOS : constant Integer := 10;

type listaContactos is array(1..MAX_CONTACTOS) of Contacto;

procedure crearContacto(lista_contactos : in out listaContactos;


numero_contactos : in out Integer; contacto_nuevo : in out Contacto; Nombre,
Telefono, Email : in String) is

begin

if numero_contactos < MAX_CONTACTOS then

contacto_nuevo.Nombre := Nombre;
contacto_nuevo.Telefono := Telefono;
contacto_nuevo.Email := Email;

numero_contactos := numero_contactos + 1;
lista_contactos(numero_contactos) := contacto_nuevo;
else
Put_Line("La lista de contactos esta llena");
end if;

end crearContacto;

procedure imprimirContacto(contacto_impreso : in Contacto) is


begin

Put_Line("El contacto es:");


Put_Line("Nombre: " & contacto_impreso.Nombre);
Put_Line("Telefono: " & contacto_impreso.Telefono);
Put_Line("Email: " & contacto_impreso.Email);

end imprimirContacto;

procedure buscarContactoNombre(lista_contactos : in listaContactos;


numero_contactos : Integer ; Nombre : String) is

begin

if numero_contactos /= 0 then
for Num in 1..numero_contactos loop
if lista_contactos(Num).Nombre = Nombre then
imprimirContacto(lista_contactos(Num));
return;
end if;

end loop;
Put_Line("El nombre no se ha encontrado");
return;

end if;
Put_Line("La lista de contactos esta vacia.");
end buscarContactoNombre;

procedure buscarContactoTelefono(lista_contactos : in listaContactos;


numero_contactos : Integer ; Telefono : String) is

begin

if numero_contactos /= 0 then
for Num in 1..numero_contactos loop
if lista_contactos(Num).Telefono = Telefono then
imprimirContacto(lista_contactos(Num));
return;
end if;

end loop;
Put_Line("El telefono no se ha encontrado");
return;

end if;
Put_Line("La lista de contactos esta vacia.");
end buscarContactoTelefono;

procedure eliminarContacto(lista_contactos : in out listaContactos;


numero_contactos: in out Integer; indice_contacto: in Integer) is

aux : Contacto;
begin

aux := lista_contactos(indice_contacto);
lista_contactos(indice_contacto) := lista_contactos(numero_contactos);
lista_contactos(numero_contactos) := aux;

numero_contactos := numero_contactos - 1;

end eliminarContacto;
procedure imprimirContactos(lista_contactos : in out listaContactos;
numero_contactos: in Integer) is

begin
for Num in 1..numero_contactos loop
imprimirContacto(lista_contactos(Num));
Put_Line(" ");
end loop;

end imprimirContactos;

contacto_1 : Contacto;
lista_contactos : listaContactos;
numero_contactos : Integer := 0;

begin
crearContacto(lista_contactos, numero_contactos, contacto_1, "Samuel",
"123456789", "871011@unizar.es");
crearContacto(lista_contactos, numero_contactos, contacto_1, "Samue1",
"978653783", "870111@unizar.es");
crearContacto(lista_contactos, numero_contactos, contacto_1, "Samue3",
"434543212", "875511@unizar.es");
crearContacto(lista_contactos, numero_contactos, contacto_1, "Samue4",
"342566543", "819011@unizar.es");

imprimirContactos(lista_contactos, numero_contactos);

Put_Line("");

Put_Line("Buscamos el contacto con el nombre Samuel:");


buscarContactoNombre(lista_contactos, numero_contactos, "Samuel");

Put_Line("");

Put_Line("Buscamos el contacto con el telefono 123456789:");


buscarContactoTelefono(lista_contactos, numero_contactos, "123456789");

Put_Line("Eliminamos el contacto con el indice 3:");


eliminarContacto(lista_contactos, numero_contactos, 3);
Put_Line("");

imprimirContactos(lista_contactos, numero_contactos);

end Main;

También podría gustarte