Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
practica 11 ejercicio 2
program HelloWorld; {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- CONST - Define las constantes para usar en tiempo de compilacion} const categorias = 4; caracteres = 70; FIN = 'fin'; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- TYPE - Define los tipos creados por el usuario para usar en tiempo de compilacion} type conj = set of char; rangoCategorias = 1 .. categorias; rangoCaracteres = 1 .. caracteres; Tnombre = string[15]; Tvector = record vector : array [rangoCaracteres] of char; DimL : rangoCaracteres; end; Tcliente = record nombre : Tnombre; apellido : Tnombre; categoria : rangoCategorias; montoBasico : real; direccion : Tvector; end; Tlista = ^nodo; nodo = record datos : Tcliente; sig : Tlista; end; montoExtra = array [rangoCategorias] of real; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- VARIABLES GLOBALES - Define variables que se podran usar por todos los modulos de ser necesarias} //var {-----------------------------------------------------------------------------------------------------------------------} { Tcliente = record nombre : Tnombre; apellido : Tnombre; categoria : rangoCategorias; montoBasico : real; direccion : Tvector; end; } // imprimir lista {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- IMPRIMIR ELEMENTO ...} procedure imprimirElemento(e : Tcliente); var i : rangoCaracteres; begin writeln('nombre : ',e.nombre); writeln('apellido : ',e.apellido); writeln('categoria : ',e.categoria); writeln('monto basico : ',e.montoBasico:10:2); write('direccion : '); for i := 1 to e.direccion.DimL do write(e.direccion.vector[i]); writeln; writeln('-----------------------------------------------------------------'); end; {----------------------------------------------------------------- IMPRIMIR LISTA ...} procedure imprimirLista( l: Tlista); begin writeln('imprimimos lista -----------------------------------------------------------------'); while l <> nil do begin imprimirElemento(l^.datos); l:= l^.sig; end; writeln('---------------------------------------------------------------------------------------------------------------'); end; {-----------------------------------------------------------------------------------------------------------------------} { Tcliente = record nombre : Tnombre; apellido : Tnombre; categoria : rangoCategorias; montoBasico : real; direccion : Tvector; end; } // cargar listas {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- LEER DIRECCION ...} procedure leerDireccion (var v : Tvector); var car : char; begin v.DimL := 1; read(car); while (car <> '.') and (v.DimL < caracteres) do begin v.vector[v.DimL] := car; v.DimL := v.DimL + 1; read(car); end; readln; if v.DimL > 1 then v.DimL := v.DimL - 1; end;// {----------------------------------------------------------------- LEER ELEMENTO ...} procedure leerElemento(var e : Tcliente); begin readln(e.nombre); if e.nombre <> FIN then begin readln(e.apellido); e.montoBasico :=random(10000); e.categoria:=random(categorias)+1; leerDireccion(e.direccion); end; end; {----------------------------------------------------------------- AGREGAR ELEMENTO ...} procedure agregarElemento(var l : Tlista; e : Tcliente); var nue : Tlista; begin new(nue); nue^.datos:= e; nue^.sig := l; l:= nue; end; {----------------------------------------------------------------- CARGAR LISTA ...} procedure cargarLista(var l: Tlista); var e : Tcliente; begin l := nil; leerElemento(e); while e.nombre <> FIN do begin agregarElemento(l,e); leerElemento(e); end; end; {-----------------------------------------------------------------------------------------------------------------------} // cargar vector {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- CARGAR VECTOR ...} procedure cargarVector(var v : montoExtra); var i : rangoCategorias; begin for i := 1 to categorias do v[i] := random(2600); end; {-----------------------------------------------------------------------------------------------------------------------} // imprimir vector {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- IMPRIMIR VECTOR...} procedure imprimirVector(v: montoExtra); var i : rangoCategorias; begin for i := 1 to categorias do write('-------'); for i := 1 to categorias do write(' | ',v[i]:4:2); writeln(' | ',v[i]:4:2,' | '); for i := 1 to categorias do write('-------'); end; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} procedure espacio; begin writeln;writeln;writeln;writeln; writeln('-----------------------------------------------------------------------------------------------------------------------'); writeln;writeln;writeln;writeln; end; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- } function pasarMinus (car : char): char; begin case car of 'A': pasarMinus:= 'a'; 'B': pasarMinus:= 'b'; 'C': pasarMinus:= 'c'; 'D': pasarMinus:= 'd'; 'E': pasarMinus:= 'e'; 'F': pasarMinus:= 'f'; 'G': pasarMinus:= 'g'; end; end; {----------------------------------------------------------------- } procedure inicializarConjunto(var c1 : conj; var digitoPar : conj; var A : Tvector; var exito : boolean; var j : rangoCaracteres; var A2 : conj; var i : rangoCaracteres); begin c1 := ['A','B','C','D','E','F','G']; digitoPar := ['2','4','6','8']; exito := true; A.DimL := 1; j := 1; i := 1; A2:= []; end; {----------------------------------------------------------------- } procedure parteA(var v : Tvector; var i : rangoCaracteres; var exito : boolean; var A : Tvector;c1,digitoPar:conj ;var A2 : conj ); begin while(v.vector[i] <> '%') and (exito) do begin if not (v.vector[i] in c1)or not(v.vector[i] in digitoPar) then begin exito := false; end else begin if v.vector[i] in c1 then begin A.vector[A.DimL] := pasarMinus(v.vector[i]); A.DimL := A.DimL + 1; end; A2 := A2 + [v.vector[i]]; i := i+1; end; end; A.DimL := A.DimL - 1; end; {----------------------------------------------------------------- } procedure parteB(var v : Tvector; var i : rangoCaracteres; var exito : boolean; var j : rangoCaracteres;A : Tvector); begin // se verifica b : while(v.vector[i] <> '%') and (exito) do begin if not (v.vector[i] <> A.vector[j]) then begin exito := false; end else begin i := i+1; j := j+1; end; end; end; {----------------------------------------------------------------- } procedure parteC(var v : Tvector; var i : rangoCaracteres; var exito : boolean; A2 : conj); begin while (v.vector[i] <> '%') and (exito)and (i < v.DimL)do begin if (v.vector[i] in A2) then begin exito := false; end else i := i+1; end; end; {----------------------------------------------------------------- } function cumple(v : Tvector):boolean; var i : rangoCaracteres; c1,digitoPar : conj; exito : boolean; A : Tvector;A2 : conj; j : rangoCaracteres; begin inicializarConjunto(c1,digitoPar,A,exito,j,A2,i); while (exito) and (i <= v.DimL)do begin // se verifica a : parteA(v ,i ,exito,A,c1,digitoPar,A2); // pasamos '%' i := i+1; parteB(v,i,exito,j,A); i := i+1; // se verifica c : parteC(v,i,exito,A2); end; cumple := exito; end; {----------------------------------------------------------------- } procedure informar(r : montoExtra;nmax : Tnombre); var i : rangoCategorias; begin for i := 1 to categorias do writeln('para la categoria ',i, ' se recaudó ',r[i]:10:2); if r[2] = 0 then begin writeln(' no se recaudo en la categoria 2'); end else writeln(' el nombre de la persona que mas pago en la categoria 2 fue ',nmax); end; {----------------------------------------------------------------- } procedure masPago(l : Tlista;var max : real; var nmax : Tnombre); begin if l^.datos.categoria = 2 then begin if l^.datos.montoBasico > max then begin max := l^.datos.montoBasico; nmax := l^.datos.nombre; end; end; end; {----------------------------------------------------------------- } procedure inicializacion(var r : montoExtra; var max : real); var i : rangoCategorias; begin for i := 1 to categorias do r[i] := 0; max := 0; end; {----------------------------------------------------------------- } procedure recorrerLista(l : Tlista; v : montoExtra); var r : montoExtra; // se utilizara para calcular el monto total facturado por la empresa para cadacategoria max : real; nmax : Tnombre; begin inicializacion(r,max); while l <> nil do begin // ejercicio 1: r[l^.datos.categoria] := r[l^.datos.categoria] + l^.datos.montoBasico + v[l^.datos.categoria]; // ejercicio 2: masPago(l,max,nmax); // ejercicio 3: writeln('la secuencia cumple : ',cumple(l^.datos.direccion)); l := l^.sig; end; informar(r,nmax); end; {-----------------------------------------------------------------------------------------------------------------------} {-----------------------------------------------------------------------------------------------------------------------} {----------------------------------------------------------------- PROGRAMA PRINCIPAL} var l : Tlista; v : montoExtra; begin cargarLista(l); imprimirLista(l);espacio; cargarVector(v); imprimirVector(v);espacio; recorrerLista(l,v); end. {-----------------------------------------------------------------------------------------------------------------------}
run
|
edit
|
history
|
help
0
Calcula média de pesos, o maior peso, o menos peso
Kim
zad27-notoptimal
Pokazivac-dinamicka alokacija memorije
https://m.facebook.com/akansha.panchal.906?refid=12&ref=opera_speed_dial
[DE/GER] Caesar Chiffre (Entschlüsseln)
OLEG-02oct2017
урок 8 задача 5 символьный тип данных
practica 5 ejercicio 6
3e22