segunda-feira, 22 de outubro de 2012

Programa da lista ordenada

Program lista_ordenada ;
type nada = string[20];
     Tipo_A = ^Tipo_B;
 Tipo_B = Record
 info : Nada;
 Prox : Tipo_A;
end;
Var pi : Tipo_A;
    opcao,x : char;
 Procedure Inserir;
    Var px : Tipo_A;
       Begin
            New(px);
            writeln('Inserira um nome');
            Readln(px^.info);
            px^.prox:=pi;
            pi:=px;
            Writeln('O dado foi introduzido com sucesso');
       end;

 Procedure Listar;
     Var Px : Tipo_A;
   Begin
        Writeln;
    px:=pi;
    If (px=nil) then
        Writeln('lista vazia')
    else
       begin
    While(px<>nil) do
      Begin
          Writeln(px^.info);
      px := px^.prox;
      end;
    end; 
   end;
 Procedure Ordenar;
     Var p1,p2:Tipo_A;
     Trocar:boolean;
     aux :nada;
   Begin
        p1:=pi;
    p2:=pi^.prox;
        If (p1<>nil) and (p1^.prox<>nil) then
    repeat
          Trocar:=false;
      p1:=pi;
      p2:=pi^.prox;
      Repeat
        If (p1^.info > p2^.info) then
      Begin
           Trocar:=true;
       aux:=p1^.info;
       p1^.info:=p2^.info;
       p2^.info:=aux;
          end;
      p1:=p1^.prox;
      p2:=p2^.prox;
      until p1^.prox=nil;
    until not trocar;
   end;
 Procedure Remover;
   Var px:Tipo_A;
       pa:Tipo_A;
       dado:Nada;
      
   begin
        If pi<>nil then
     begin
          writeln('->Escreva o dado a excluir na lista');
      readln(dado);
      px:=pi;
      pa:=nil;
      While (px<>nil) and (px^.info<>dado) do
      begin
           pa:=px;
           px:=px^.prox;
      end;
      If px = nil then
         writeln('O dado nao se encontra na lista')
      else
          begin
        If pa=nil then
       pi:=px^.prox
    else
       begin
          pa^.prox:=px^.prox;
      dispose(px);
      writeln(dado,'foi removido com sucesso');
       end;
      end;
     end;
   end;                      
      
begin
     pi:=nil;
 Repeat
      writeln('____Menu____');
  writeln;
  writeln('Inserir ---> 1');
  writeln('listar ---> 2');
  writeln('Remover---> 3');
  writeln('Sair--->0 ');
  writeln('qual é a sua opção');
  readln(opcao);
  Case opcao of
      '1':begin Inserir; Ordenar; end;
      '2':Listar;
      '3':Remover;
      '0':writeln('Fim do programa');
  end;
 until (opcao='0');
end.                     

1 comentário:

  1. Rui Pedrosa, este comentário é igual para todas as atividades que colocou no seu e-portefólio...deverá fazer uma reflexão para cada atividade/tarefa que colocou...

    ResponderEliminar