ESTRUTURA DE DADOS > PONTEIROS

13/09/2017

0

Tenho duas listas, L1 e L2, onde insiro dados na L1 e L2, L2 é limitada a quantidade de registros que fiz em L1... Essa parte consegui fazer, mas preciso salvar em uma terceira lista L3, em ordem crescente de chave os dados que inseri na L1 E L2... Alguém me da um help porque não tô conseguindo... =(


Program Pzim ;

type

Ptr = ^TLista;

TLista = Record
Nome: String;
Chave: String;
Prox: Ptr;
end;

var
Primeiro, Ultimo, L1, L2, L3: Ptr;
Nome, Chave: String;
MN, I: integer;

procedure coloca(Nome, Chave: String);
begin

new(L1);
L1^.Nome := Nome;
L1^.Chave := Chave;
L1^.Prox := nil;
if Primeiro = nil then
Primeiro := L1
else
Ultimo^.Prox := L1;
Ultimo := L1;

end;

procedure coloca1(Nome, Chave: String);
begin

new(L2);
L2^.Nome := Nome;
L2^.Chave := Chave;
L2^.Prox := nil;
if Primeiro = nil then
Primeiro := L2
else
Ultimo^.Prox := L2;
Ultimo := L2;

end;

procedure coloca2(Nome, Chave: String);
begin

new(L3);
L3^.Nome := Nome;
L3^.Chave := Chave;
L3^.Prox := nil;
if Primeiro = nil then
Primeiro := L3
else
Ultimo^.Prox := L3;
Ultimo := L3;

end;

procedure lerid; // Ler identidade
var
MM: String;
begin
While (MM <> 'N') do
begin

writeln('Informe seu nome: ');
readln(Nome);
writeln('Informe sua chave: ');
readln(Chave);

coloca(Nome, Chave);
I := I + 1;
writeln('Deseja Cadastrar outro usuario? (S/N)');
readln(MM);

end;

End;

procedure cadastro2; //SALVANDO NA LISTA L2
var
J, L: integer;
begin
For J := 1 to I do
begin
writeln('Informe seu nome: ');
readln(Nome);
writeln('Informe sua chave: ');
readln(Chave);
L := L + 1;
coloca1(Nome, Chave);
end;
I := I + L;
end;

procedure mostra; // TENTANDO POR EM ORDEM CRESCENTE DE CHAVE
var
aux: Ptr;
T: integer;
begin
aux := Primeiro;

For T := 1 to I do
begin

if (L1^.Chave < L2^.Chave) then
begin

L3^.Chave := L1^.Chave;
L3^.PROX := NIL;






end;
END;

for T:= 1 to I do
begin
if (aux <> nil) then
begin
writeln;
writeln('#####################################');
writeln('# Usuario encontrado: ', aux^.Nome);
writeln('# CHAVE do maluco: ', aux^.Chave);
writeln('####################################');
writeln;
aux := aux^.Prox;
end;

end;
end;

Begin

Primeiro := Nil;
Ultimo := Nil;
repeat
writeln('(1) Cadastrar Usuario ');
writeln('(2) Cadastrar segunda estrutura de usuarios ');
writeln('(3) Mostrar');
writeln('(0) Sair');
readln(MN);

case MN of
1:
lerid;
2:
cadastro2;
3:
mostra;

end;

if (MN <> 1) and (MN <> 2) and (MN <> 3) and (MN <> 0) then
begin
writeln('Opcao invalida');
end;

until MN = 0;

end.
Danillo Souza

Danillo Souza

Responder

Posts

19/09/2017

Everton Santos

ta meio confuso seu código, o que deseja fazer exatamente? essa lista vc carrega de um arquivo texto ?
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar