practica 9 ejercicio 2
program HelloWorld;
const
FIN = 0;
type
lista = ^nodo;
nodo = record
datos : integer;
sig : lista;
end;
procedure agregarElemento(var l : lista; n : integer);
var
nue : lista;
begin
new (nue);
nue^.datos := n;
nue^.sig := l;
l := nue;
end;
procedure cargarLista(var l: lista);
var
n : integer;
begin
l := nil;
n := random(20)-10;
while (n <> FIN) do begin
agregarElemento(l,n);
n := random(20)-10;
end;
end;
procedure imprimirLista(l : lista);
begin
while l^.sig <> nil do begin
if l^.datos > 0 then begin
write(l^.datos,' - ');
end else
write('(',l^.datos,') - ');
l:= l^.sig;
end;
if l^.datos > 0 then begin
writeln(l^.datos,'.');
end else
writeln('(',l^.datos,').');
end;
function impar(l : lista): integer;
var
digitos : integer;
num : integer;
cant : integer;
begin
cant := 0;
while (l <> nil) do begin
num := l^.datos;
digitos := 0;
if num < 0 then num := num * (-1);
while num <> 0 do begin
digitos := digitos + 1;
num := num div 10;
end;
if digitos mod 2 <> 0 then
cant := cant + 1;
l := l^.sig;
end;
impar := cant;
end;
function mayor (l : lista):integer;
var
max : integer;
begin
max := 0;
while (l <> nil) do
begin
if max < l^.datos then max := l^.datos;
l := l^.sig;
end;
mayor := max;
end;
procedure ultimosPares(l : lista);
var
par1, par2 : integer;
begin
par1 := 0;
while (l <> nil) do begin
if l^.datos mod 2 = 0 then begin
par2 := par1;
par1 := l^.datos;
end;
l := l^.sig;
end;
writeln('ultimo par : ',par1 , '. ante ultimo par : ', par2,'.');
end;
procedure recorrerLista(l:lista);
var
num : integer;
begin
writeln;
writeln('-----------------------------------------------------------------');
writeln('ejercicios : ');
writeln('el mayor numero ingresado es ',mayor(l));
writeln('la cantidad de numeros cuya cantidad de digitos es impar es ',impar(l));
writeln('los dos ultimos numeros pares son ');
ultimosPares(l);
end;
procedure liberar(var l : lista);
var
aux : lista;
begin
while (l <> nil) do begin
aux := l^.sig;
dispose(l);
l:= aux;
end;
end;
var
l : lista;
begin
randomize;
cargarLista(l);
imprimirLista(l);
recorrerLista(l);
liberar(l);
end.
|
run
| edit
| history
| help
|
0
|
|
|