Ir ao conteúdo
  • Cadastre-se

Ordenar registro por ordem alfabetica em pascal


Posts recomendados

Bom dia,

 

Estou precisando fazer um trabalho sobre uma lista telefônica, nessa lista necessito fazer um procedure para ordenar de em ordem alfabética por nome e sobrenome. Segundo o enunciado abaixo:

"Implemente o procedimento para inserir um item na Lista. Este procedimento deverá inserir um item na Lista de forma ordenada pelo nome e depois sobrenome da pessoa. Protótipo: procedure Insere(var Lista:TipoLista; x:TipoItem);"

Se alguém puder me auxiliar com esse pedaço de código, porque já pesquisei e não achei nada.

 

Obrigado

Link para o comentário
Compartilhar em outros sites

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.

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...