Ir ao conteúdo

Pascal usando lista


lenivaldos

Posts recomendados

Postado

Bom dia a todos !

Meu nome é Lenivaldo

Estou precisando de ajuda para fazer um programa em pascal, é um trabalho de faculdade a questão é:

• Dadas duas listas L1 e L2, que possam estar desordenadas

contendo elementos repetidos :

– Verifique se L1 está ordenada ou não (a ordem pode ser cresc

decrescente)

– Faça uma cópia da lista L1 em uma outra lista L2;

– Faça uma cópia da Lista L1 em L2, eliminando elementos repe

– Inverta L1 colocando o resultado em L2;

achei um código que é parecido com esse que estou precisando no forum mais acho que esta faltando alguma coisa. Alguém poderia mim ajudar, vou colocar o código fonte que achei a baixo.

Program Pzim ;
var
l1, l2: array [1..10] of Integer;
i, j, l, aux, aux3: Integer;
aux2: Boolean;

begin
Writeln('Digite os elementos da lista: ');
for i := 1 to 10 do
Readln(l1[i]);

j:= 1;
for i := 1 to 10 do
begin
aux2 := True;
for l := 1 to j do
if l2[l] = l1[i] then aux2 := False;
if aux2 then
begin
l2[j] := l1[i];
j:= j + 1;
end;
end;

for i := 1 to 10 do
Write(l1[i], ' ');
Writeln;
for i := 1 to j - 1 do
Write(l2[i], ' ');
Readln;
end.

Postado

Cara eu dei uma olhada no código que você postou e num tm muita coisa la que resolva seu problema não, daí eu fiz um, meio que apertir daquele contendo as mesmas variáveis, compila ele ai, ficou assim :

Program Pzim ;
uses crt;
const max = 10;
var
l1, l2: array [1..10] of Integer;
i, j, temp: Integer;
ind : integer;
aux2: Boolean;

begin
clrscr;
Writeln('Digite os elementos da lista: ');
for i := 1 to max do
Readln(l1[i]);

temp := 0;

{verifica ordena‡Æo crescente}
for j:=1 to max do
begin
for i:=j to max do
if l1[j]<=l1[i] then aux2 := true
else
begin
aux2 := false;
break;
end;
if aux2=false then
break;
end;
if aux2 then
begin
writeln('Lista em ordem crescente.');
inc(temp);
end;

{verifica ordena‡Æo decrescente}
for j:=1 to max do
begin
for i:=j to max do
if l1[j]>=l1[i] then aux2 := true
else
begin
aux2 := false;
break;
end;
if aux2=false then
break;
end;
if aux2 then
begin
writeln('Lista em ordem decrescente.');
inc(temp);
end;

if temp=0 then writeln('Lista desordenada.');

{copiar lista um na lista dois}
for i := 1 to max do
l2[i] := l1[i];
writeln('Lista dois');
for i := 1 to max do
write(l2[i],' ');
writeln;

ind := 0;
for i := 1 to max do
begin
temp := 0;
for j:=1 to max do
if l1[i] = l1[j] then
inc(temp);

if temp=1 then
begin
inc(ind);
l2[ind] := l1[i];
end;
end;
writeln('l2 contendo elementos de l1 nao repetidos');
for i := 1 to ind do
write(l2[i],' ');
writeln;

for i := max downto 1 do
l2[(max+1)-i] := l1[i];
Writeln;
writeln('l2 contendo l1 invertido.');
for i := 1 to max do
Write(l2[i], ' ');
Readln;
end.

Postado
Cara eu dei uma olhada no código que você postou e num tm muita coisa la que resolva seu problema não, daí eu fiz um, meio que apertir daquele contendo as mesmas variáveis, compila ele ai, ficou assim :

Program Pzim ;
uses crt;
const max = 10;
var
l1, l2: array [1..10] of Integer;
i, j, temp: Integer;
ind : integer;
aux2: Boolean;

begin
clrscr;
Writeln('Digite os elementos da lista: ');
for i := 1 to max do
Readln(l1[i]);

temp := 0;

{verifica ordena‡Æo crescente}
for j:=1 to max do
begin
for i:=j to max do
if l1[j]<=l1[i] then aux2 := true
else
begin
aux2 := false;
break;
end;
if aux2=false then
break;
end;
if aux2 then
begin
writeln('Lista em ordem crescente.');
inc(temp);
end;

{verifica ordena‡Æo decrescente}
for j:=1 to max do
begin
for i:=j to max do
if l1[j]>=l1[i] then aux2 := true
else
begin
aux2 := false;
break;
end;
if aux2=false then
break;
end;
if aux2 then
begin
writeln('Lista em ordem decrescente.');
inc(temp);
end;

if temp=0 then writeln('Lista desordenada.');

{copiar lista um na lista dois}
for i := 1 to max do
l2[i] := l1[i];
writeln('Lista dois');
for i := 1 to max do
write(l2[i],' ');
writeln;

ind := 0;
for i := 1 to max do
begin
temp := 0;
for j:=1 to max do
if l1[i] = l1[j] then
inc(temp);

if temp=1 then
begin
inc(ind);
l2[ind] := l1[i];
end;
end;
writeln('l2 contendo elementos de l1 nao repetidos');
for i := 1 to ind do
write(l2[i],' ');
writeln;

for i := max downto 1 do
l2[(max+1)-i] := l1[i];
Writeln;
writeln('l2 contendo l1 invertido.');
for i := 1 to max do
Write(l2[i], ' ');
Readln;
end.

Laverson obrigado pela ajuda seu código ajudou bastante. um abraço.

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!