Então eu criei uma base, mas algumas opções como inserir em ordem alfabética e a busca não consegui implementar, se puderem estar me auxiliando.
program ListaTelefonica;
uses crt;
const inicioLista = 1;
maxTam = 1000;
type TipoApontador = integer;
TipoTelefone = record
cod_area: integer;
num_tel: string;
end;
TipoItem = record
nome: string;
sobrenome: string;
telefone: TipoTelefone;
end;
TipoLista = record
item: array [1..MAXTAM] of TipoItem;
primeiro: TipoApontador;
ultimo: TipoApontador;
end;
procedure FLVazia (var Lista: tipoLista);
begin
Lista.primeiro:= inicioLista;
Lista.ultimo:= Lista.primeiro;
end;
function Vazia (var Lista: tipoLista): boolean;
begin
vazia := Lista.primeiro = Lista.ultimo;
end;
procedure Insere(var Lista:TipoLista; x:TipoItem);
begin
if (lista.ultimo > maxTam) then
begin
writeln ('A lista esta cheia!');
writeln;
writeln ('Não é possivel inserir mais cadastros!');
end
else
begin
end;
procedure Retira(p:TipoApontador; var Lista:TipoLista; var Item:TipoItem);
var aux : integer;
begin
if (Vazia(lista))or (p>=lista.Ultimo) then
writeln ('Erro: Posicao nao existe!')
else
begin
item:=lista.Item[p];
lista.ultimo:= lista.Ultimo - 1;
writeln;
writeln ('Chave removida com sucesso! Tecle ENTER para continuar...');
for aux := p to lista.Ultimo-1 do
lista.Item[aux]:= lista.Item [aux + 1];
end;
end;
procedure Imprime(var Lista:TipoLista);
var aux: integer;
begin
for aux:= lista.Primeiro to lista.Ultimo - 1 do
begin
writeln ('Usuario: ', aux);
writeln ('Nome: ', lista.Item[aux].nome);
writeln ('Sobrenome: ', lista.Item[aux].sobrenome);
writeln ('Codigo de area: ', lista.Item[aux].telefone.cod_area);
writeln ('Numero de Telefone: ',lista.Item[aux].telefone.num_tel);
end;
end;
function Busca(nome:string; sobrenome:string; Lista:TipoLista):TipoApontador;
i: integer;
begin
i:=1;
while (lista.item[i].nome <> nome) and (i < lista.Ultimo) do
begin
i:=i +1;
begin
Busca:=i;
end
end;
end
end
end;
{alterar telefone}
procedure sair;
begin
clrscr;
writeln ('Obrigado pela preferencia!Volte Sempre!');
end;
procedure Menu( );
begin
writeln('|---------------------|');
writeln('|--------MENU---------|');
writeln('| 1- Inserir |');
writeln('| 2- Retirar |');
writeln('| 3- Imprimir |');
writeln('| 4- Buscar |');
writeln('| 5- Alterar Telefone |');
writeln('| 0- Sair |');
writeln('|---------------------|');
write(' Digite a opcao desejada: ');
end;
var
opcao:integer;
p: tipoApontador;
lista: TipoLista;
item: TipoItem;
telefone: TipoTelefone;
nome,sobrenome: string;
Begin
opcao:= -1;
FLVazia(lista);
while (opcao <>0) do
begin
clrscr;
menu( );
readln (opcao);
if (opcao = 1) then
begin
clrscr;
writeln ('Digite os dados do usuario a ser inserido na lisa telefonica: ');
writeln ('Nome: ');
readln (item.nome);
writeln ('Sobrenome: ');
readln (item.sobrenome);
writeln ('Codigo de area: ');
readln (item.telefone.cod_area);
writeln ('Numero Telefone: ');
readln (item.telefone.num_tel);
Insere(lista, item);
writeln;
writeln ('Usuario inserido com sucesso! Tecle ENTER para continuar...');
readln;
end
else
if (opcao = 2) then
begin
clrscr;
writeln ('Digite a posicao do usuario a ser removido: ');
readln (p);
Retira (p,lista, item);
readln;
end
else
if (opcao = 3) then
begin
clrscr;
Imprime (lista);
writeln;
writeln ('Tecle ENTER para continuar...');
readln;
end
else
if (opcao = 4) then
begin
clrscr;
writeln ('Digite os dados do usuario a ser buscado na lista');
write ('Nome: ');
readln (nome);
write ('Sobrenome: ');
readln (sobrenome);
p:= Buscar(nome, sobrenome, lista);
if p <> (lista.Ultimo) then
writeln ('A posicao do usuario buscado na lista eh: ',p)
else
writeln ('ERRO...O usuario buscado nao se encontra cadastrado na lista!');
writeln;
writeln ('Tecle ENTER para continuar...');
readln;
end
else
if (opcao = 5) then
begin
clrscr;
writeln ('Digite os dados do usuario a ser alterado na lista');
write ('Nome: ');
readln (nome);
write ('Sobrenome: ');
readln (sobrenome);
end
else}
if (opcao = 0) then
begin
Sair;
end
else
if (opcao <> 0)then
begin
clrscr;
writeln ('Opcao inexistente. Tecle ENTER para continuar...');
readln;
end;
end;
end.