Untitled
unknown
pascal
4 years ago
5.1 kB
5
Indexable
{500 clientes. De cada cliente conoce fecha de firma del contrato, la categoría del monotributo (entre la A y la F), el código de la ciudad donde se encuentran las oficinales(entre 1 y 2400) y el monto mensual acordado en el contrato. La info se ingresa ordenada por fecha de firma de contrato (los más antiguos primero, los más recientes últimos). Realizar un programa que lea y almacene la información de los clientes en una estructura de tipo vector. Una vez almacenados los datos, procesar dicha estructura para obtener: 1) Cantidad de contratos por cada mes y cada año, y año en que se firmó la mayor cantidad de contratos 2) Cantidad de clientes para cada categoría de monotributo 3) Código de las 10 ciudades con mayor cantidad de clientes 4) Cantidad de clientes que superan mensualmente el monto promedio entre todos los clientes.} program cap4_2ej5; const dimF=5;//500 MAXIMOCOD=2400; MAXIMODIA=31; MAXIMOMES=12; MAXIMOANIO=9999; type {vector 1 a 2400 de registro de codigo y cantidad} FechaREG=record dia: 1..MAXIMODIA; mes: 1..MAXIMOMES; anio: 0..MAXIMOANIO; end; cliente=record fecha:FechaREG; categoria: 'a'..'f'; codigo:1..MAXIMOCOD; montoMensual:real; end; vector=array[1..dimF]of cliente; vcontador=array['a'..'f']of integer; vlocalidades=array[1..2400]of integer; vectordiez=array[1..10]of integer; procedure iniVC (var vC:vcontador); var i:char; begin for i:= 'a' to 'f' do begin vC[i]:=0; end; end; procedure iniVL(var vl:vlocalidades); var i:integer; BEGIN for i:=1 to 2400 do begin v[i]:=0; end; END; procedure iniVD(var vd:vectordiez); var i:integer; begin for i:=1 to 10 do begin v[i]:=0; end; end; procedure leer (var cl:cliente); begin writeln('Ingrese la fecha del contrato con el cliente (De mas antiguo a mas reciente) '); writeln('Ingrese el dia ');readln(cl.fecha.dia); writeln('Ingrese el mes ');readln(cl.fecha.mes); writeln('Ingrese el anio ');readln(cl.fecha.anio); writeln('Ingrese la categoria del monotributo ');readln(cl.categoria); {writeln('Ingrese el codigo del cliente ');readln(cl.codigo); writeln('Ingrese el monto mensual ');readln(cl.montoMensual);} end; procedure cargarDatos(var v:vector); var i:integer; begin for i:=1 to dimF do begin leer(v[i]); end; end; procedure informar (v:vector); var i:integer; begin writeln(' '); writeln('Informe: '); for i:=1 to dimF do begin writeln(' '); writeln(' La fecha del contrato con el cliente: ',i); {writeln(' El dia: ',v[i].fecha.dia);} writeln(' El mes: ',v[i].fecha.mes); writeln(' El anio: ',v[i].fecha.anio); {writeln(' La categoria del monotributo: ',v[i].categoria); writeln(' El codigo del cliente: ',v[i].codigo); writeln(' El monto mensual: ',v[i].montoMensual:1:2);} writeln(' '); end; end; procedure maximo (var max:integer;num:integer;var maxAn:integer;anioAc:integer); BEGIN if (num>max)then begin max:=num; maxAn:=anioAc; end; END; procedure RecorrerVectorEInformar (v:vector;var vC:vcontador); var i,mesAnt,anioAnt,canAnio,canMes,maxim,maxAn:integer; CAT:char; BEGIN maxim:=-1; i:=1; while (i<=dimF) do begin anioAnt:=v[i].fecha.anio; canAnio:=0; while (i<=dimF)and(v[i].fecha.anio = anioAnt) do begin canMes:=0; mesAnt:=v[i].fecha.mes; while (i<=dimF) and (v[i].fecha.anio=anioAnt) and (mesAnt=v[i].fecha.mes) do begin canMes:=canMes+1; vC[v[i].categoria]:=vC[v[i].categoria]+1; i:=i+1; end; writeln('La cantidad de clientes en el mes ',mesAnt,' del anio ',anioAnt,' es de: ',canMes); canAnio:=canAnio+canMes; end; writeln(' la cantidad de clientes en el anio ',anioAnt,' fue de : ',canAnio); maximo(maxim,canAnio,maxAn,anioAnt); end; writeln('anio en que se firmo la mayor cantidad de contratos: ',maxAn); for CAT:='a'to 'f' do begin writeln('La cantidad de contratos con categoria de monotributo ',CAT,' es de: ',vC[CAT]); end; END; procedure sumarLocalidades (numLoc; var vl:vlocalidades); BEGIN vl[numLoc]:=vl[numLoc]+1; END; procedure diezMaximos (vl:vlocalidades;var vdiez:vectordiez); var i,max,auxMax,codMax,antCodMax:integer; begin max:=-1; antMax:=-1; for i2:=1 to 10 do begin for i:=1 to 2400 do begin if vl[i]>antMax then begin max:=antMax; antCodMax:=vl[i]; max:=vl[i]; codMax:=i; end; end; writeln('El codigo de la #',i2,' ciudad con mas clientes es: ',max); end; end; //PROGRAMA PRINCIPAL var v:vector; vC:vcontador; vl:vlocalidades; vd:vectordiez; BEGIN iniVC(vC); cargarDatos(v); RecorrerVectorEInformar(v,vC); informar(v); iniVL(vl); iniVD(vd); for i:=1 to dimF do begin sumarLocalidades (v[i].codigo,vl) end; diezMaximos(vl,vd); {contratosPorAnio(v);} END.
Editor is loading...