Run Code  | API  | Code Wall  | Misc  | Feedback  | Login  | Theme  | Privacy  | Patreon 

practica 9 ejercicio 2

program HelloWorld;
{-----------------------------------------------------------------------------------------------------------------------}
{-----------------------------------------------------------------
CONST - Define las constantes para usar en tiempo de compilacion}
const
    FIN = 0;
{-----------------------------------------------------------------------------------------------------------------------}




{-----------------------------------------------------------------------------------------------------------------------}
{-----------------------------------------------------------------
TYPE - Define los tipos creados por el usuario para usar en tiempo 
de compilacion}
type
    lista = ^nodo;
    nodo = record
        datos : integer;
        sig : lista;
    end;
{-----------------------------------------------------------------------------------------------------------------------}




{-----------------------------------------------------------------------------------------------------------------------}
{-----------------------------------------------------------------
VARIABLES GLOBALES - Define variables que se podran usar por todos los modulos
de ser necesarias}
//var
{-----------------------------------------------------------------------------------------------------------------------}





{-----------------------------------------------------------------------------------------------------------------------}
{-----------------------------------------------------------------
AGREGAR ELEMENTO ...}
procedure agregarElemento(var l : lista; n : integer);
var
    nue : lista;
begin
        new (nue);
        nue^.datos := n;
        nue^.sig := l;
        l := nue;
end;

{-----------------------------------------------------------------
CARGAR LISTA ...}
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;


{-----------------------------------------------------------------------------------------------------------------------}
{-----------------------------------------------------------------
IMPRIMIR LISTA ...}
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;


{-----------------------------------------------------------------------------------------------------------------------}
{-----------------------------------------------------------------
IMPAR - Se encarga de contar la cantidad de numeros que tienen cantidad de digitos impares ...}
function impar(l : lista): integer;
var 
    digitos : integer; // contador de digitos
    num : integer;    // guarda el numero a operar
    cant : integer;   // almacena la cantidad de numeros con cantidad de digitos impares
begin     // inicializamos la cantidad: 
    cant := 0;
    // empezamos el recorrido
    while (l <> nil) do begin
        // guardamos el numero e inicializamos digitos
        num := l^.datos;
        digitos := 0;
        if num < 0 then num := num * (-1);
        // analisis del numero
        while num <>  0 do begin
            digitos := digitos + 1;
            num := num div 10;
        end;
        // verif
        if digitos mod 2 <> 0 then
            cant := cant + 1;
        // pasamos al siguiente numero
        l := l^.sig;    
    end;
    // guardamos el resultado
    impar := cant;
end;

{-----------------------------------------------------------------
BUSCAR NUMERRO ...}
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;
{-----------------------------------------------------------------
ULTIMOS PARES ...}
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;
{-----------------------------------------------------------------
RECORRER LISTA ...}
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;
{-----------------------------------------------------------------------------------------------------------------------}
{-----------------------------------------------------------------
LIBERAR LISTA ... }
procedure liberar(var l : lista);
var
    aux : lista;
begin
    while (l <> nil) do begin
        aux := l^.sig;
        dispose(l);
        l:= aux;
    end;
end;
{-----------------------------------------------------------------------------------------------------------------------}







{-----------------------------------------------------------------------------------------------------------------------}
{-----------------------------------------------------------------
PROGRAMA PRINCIPAL}
var
    l : lista;
begin
    randomize;
    
    cargarLista(l);
    
    imprimirLista(l);
    
    recorrerLista(l);
    
    liberar(l);
end.
{-----------------------------------------------------------------------------------------------------------------------}


{
a) El mayor número leído.
b) La cantidad de números cuya cantidad de dígitos es impar.
c) Los 2 últimos números pares de la lista.}
 run  | edit  | history  | help 0