Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
practica 11 ejercicio 4
program HelloWorld; {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- CONST - Define las constantes para usar en tiempo de compilacion} const dias = 31; meses = 12; calles = 122; anioPasado = 2020; calleMin = 11; calleMax = 20; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- TYPE - Define los tipos creados por el usuario para usar en tiempo de compilacion} type rangoDias = 1 .. dias; rangoMeses = 1 .. meses; rangoListas = calleMin .. calleMax; rangoCalles = 1 .. calles; Tdireccion = record calle : rangoCalles; numero : integer; piso : integer; depto : char; end; Tfecha = record dia: rangoDias; mes: rangoMeses; anio : integer; end; Tpaquete = record fecha : Tfecha; // hace referencia a la fecha de envio entrega : boolean; direccion : Tdireccion; end; Tlista = ^nodo; nodo = record datos : Tpaquete; sig : Tlista; end; vectorCalles = array [rangoCalles] of integer; vectorMeses = array [rangoMeses] of integer; vectorListas = array [rangoListas] of Tlista; {-----------------------------------------------------------------------------------------------------------------------} //agregarElemento // ejercicios //borrarElemento //insertarOrdenado {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- VARIABLES GLOBALES - Define variables que se podran usar por todos los modulos de ser necesarias} //var {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- } procedure leerDireccion(var d : Tdireccion); begin d.numero := random(20)-1; if d.numero <> -1 then begin d.calle := random(calles) + 1; d.piso := random(15); d.depto := 'a'; end; end; {----------------------------------------------------------------- } procedure leerFecha(var f : Tfecha); begin f.dia := random(dias)+1; f.mes := random(meses)+1; f.anio := anioPasado; end; {----------------------------------------------------------------- } procedure leerPaquete(var p : Tpaquete); var n : integer; begin leerDireccion(p.direccion); if p.direccion.numero <> -1 then begin leerFecha(p.fecha); n := random(2); if n = 1 then begin p.entrega := true; end else p.entrega := false; end; end; {----------------------------------------------------------------- } procedure cargarPaquete(var l : Tlista; p : Tpaquete); var nue : Tlista; begin new(nue); nue^.datos := p; nue^.sig := l; l := nue; end; {----------------------------------------------------------------- } procedure cargarLista(var l : Tlista); var p : Tpaquete; begin l:= nil; leerPaquete(p); while p.direccion.numero <> -1 do begin cargarPaquete(l,p); leerPaquete(p); end; end; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- } procedure espacio; begin writeln('-----------------------------------------------------------------'); end; {----------------------------------------------------------------- } procedure espacioLargo; begin writeln('----------------------------------------------------------------------------------------------------------------------------------'); end; {----------------------------------------------------------------- } procedure imprimirPaquete(p : Tpaquete); begin writeln('direccion :'); write(' '); writeln('calle : ',p.direccion.calle); write(' '); writeln('numero: ',p.direccion.numero); write(' '); writeln('piso: ',p.direccion.piso); write(' '); writeln('depto: ',p.direccion.depto); espacio; writeln('fecha de envio: ',p.fecha.dia,'/',p.fecha.mes,'/',p.fecha.anio); espacio; writeln('la entrega fue realizada ',p.entrega); end; {----------------------------------------------------------------- } procedure imprimirLista(l : Tlista); begin while l <> nil do begin imprimirPaquete(l^.datos); espacioLargo; l := l^.sig; end; end; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- } procedure informarMes(m : rangoMeses); begin writeln('el nombre del mes con mayor cantidad de paquetes enviados es: '); write(' '); case m of 1: writeln('enero'); 2: writeln('febrero'); 3: writeln('marzo'); 4: writeln('abril'); 5: writeln('mayo'); 6: writeln('junio'); 7: writeln('julio'); 8: writeln('agosto'); 9: writeln('septiembre'); 10: writeln('octubre'); 11: writeln('noviembre'); 12: writeln('diciembre'); end; end; {----------------------------------------------------------------- } procedure informar(v1 : vectorCalles; v2 : vectorMeses; v3 : vectorListas; i: rangoCalles; j: rangoMeses; k : rangoListas); var max : integer; mmax : rangoMeses; begin for i := 1 to calles do if (v1[i]<> 0) then writeln('el la calle ',i,' se enviaron ',v1[i],' paquetes.'); espacioLargo; max := 0; for j := 1 to meses do if v2[j] > max then begin max := v2[j]; mmax := j; end; informarMes(mmax); espacioLargo; for k:=calleMin to calleMax do begin espacioLargo; writeln('LISTA NRO //////////////////////////////////////',k); imprimirLista(v3[k]); end; end; {----------------------------------------------------------------- } procedure agregarOrdenado(var l : Tlista; e : Tpaquete); var nue,act,ant : Tlista; begin new(nue); nue^.datos := e; act := l; while (act <> nil)and(act^.datos.direccion.numero < e.direccion.numero)do begin ant := act; act := act^.sig; end; if act = l then begin l:= nue; end else ant^.sig := nue; nue^.sig := act; end; {----------------------------------------------------------------- } procedure eliminarElemento(var l : Tlista; var act : Tlista; var ant : Tlista); var h : boolean; begin h :=true; if act = l then begin l := act^.sig; h := false; end else ant^.sig := act^.sig; dispose(act); if h then begin act := ant^.sig; end else act := l; end; {----------------------------------------------------------------- } procedure inicializar(var v1: vectorCalles; var v2 : vectorMeses;var v3 : vectorListas; var act : Tlista; l : Tlista); var i : rangoCalles; j : rangoMeses; k : rangoListas; begin act := l; for i := 1 to calles do v1[i] := 0; for j := 1 to meses do v2[j] := 0; for k := calleMin to calleMax do v3[k] := nil; end; {----------------------------------------------------------------- } procedure recorrerLista(var l : Tlista); var v1 : vectorCalles; v2 : vectorMeses; v3 : vectorListas; ant,act : Tlista; begin inicializar(v1,v2,v3,act,l); while l <> nil do begin // ejercicio1: v1[act^.datos.direccion.calle]:=v1[act^.datos.direccion.calle]+1; // ejercicio2: v2[act^.datos.fecha.mes] := v2[act^.datos.fecha.mes] + 1; // ejercicio4: if (act^.datos.direccion.calle >= calleMin)and(act^.datos.direccion.calle<= calleMax) then agregarOrdenado(v3[act^.datos.direccion.calle],act^.datos); // ejercicio3: if not(act^.datos.entrega)then begin eliminarElemento(l,act,ant); end else l := l^.sig; end; informar(v1,v2,v3,1,1,calleMin); end; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- PROGRAMA PRINCIPAL} var l : Tlista; begin randomize; cargarLista(l); imprimirLista(l); recorrerLista(l); end. {-----------------------------------------------------------------------------------------------------------------------}
run
|
edit
|
history
|
help
0
Unicorn
programme 2
Task 3b
Blanko char
iwc ras
Calculatrice 1.0
Vremenska prognoza
2 5 8
Prodavnica
Linha d'água de uma caixa retangular