Programación General > Pascal
soy tan tonto q no me sale este ej con archivos
(1/1)
tomas_sauron:
gente necesito ayuda con este programa de pascal...se trata de una aplicacion para solicitudes de autos este es el enunciado estoy practicando para mi final de programacion 1 si alguien me pued ayudar muchas gracias de antemano.....hice casi todo el programa pero no logro q ejecute despues de los ingresos de los datos y ya noc q mas hacer
.- Desarrollar un algoritmo que permita la actualización de un archivo de solicitudes de planes de ahorro para compra de automóviles.
Se cuenta con un archivo secuencial ordenado en forma ascendente por el campo NRO-SOLICITUD donde están registradas todas las solicitudes vigentes. Los registros de este archivo tienen la siguiente estructura:
REGISTRO-SOLICITUD
NRO-SOLICITUD entero
TITULAR cadena de 40 caracteres
MARCA entero (1 a 4)
MODELO entero (1 a 3)
COLOR entero (1 a 8)
Y un archivo también secuencial que informa las altas a procesar. Este archivo tiene la misma estructura de registros que el archivo de solicitudes y también está ordenado en forma ascendente por el campo NRO-SOLICITUD
Se quiere generar un nuevo archivo de solicitudes resultado de efectuar las altas correspondientes. (Este archivo tendrá la misma estructura que el archivo de solicitudes.)
Se podrán rechazar altas por nro. de solicitud ya existente o por valor inválido en marca, modelo o color. Se listará cada alta rechazada indicando la razón del rechazo.
Al final del proceso se emitirá un informe indicando para cada marca, la cantidad de solicitudes existentes por modelo y color.
También al final del proceso se indicará la cantidad de registros leídos en cada uno de los archivos de entrada, la cantidad de registros grabados en el archivo actualizado, la cantidad de altas rechazadas.
--- Código: Pascal ---program autos;uses crt;type tnum=integer; tregAlta=record nro:tnum; titular:string[40]; marca:tnum; modelo:tnum; color:tnum end; tregRech=record nro:tnum; titular:string[40]; motivo:string[20] end; tregMarca=record mod1M1,mod2M1,mod3M1:tnum; mod1M2,mod2M2,mod3M2:tnum; mod1M3,mod2M3,mod3M3:tnum; mod1M4,mod2M4,mod3M4:tnum; color1M1,color2M1,color3M1,color4M1,color5M1,color6M1,color7M1,color8M1:tnum; color1M2,color2M2,color3M2,color4M2,color5M2,color6M2,color7M2,color8M2:tnum; color1M3,color2M3,color3M3,color4M3,color5M3,color6M3,color7M3,color8M3:tnum; color1M4,color2M4,color3M4,color4M4,color5M4,color6M4,color7M4,color8M4:tnum; end; arAlta=file of tregAlta; arRech=file of tregRech; arMarca=file of tregMarca; var alta,solic,solic_n:arAlta; marca:arMarca;regSol,regAlta:tregAlta;motivo:arRech; regMarca:tregMarca;finSol,finAlta,finMarca,finmotivo:boolean; procedure ingAlta(var alta:arAlta;var regAlta:tregAlta);var tecla:char;begin assign(alta,'c:userstomasarch_pascalalta.dat'); rewrite(alta); writeln('ingresa datos de altas'); readln(tecla); while(tecla='s')do begin writeln('ingrese nro de solicitud');readln(regAlta.nro); writeln('ingrese titular');readln(regAlta.titular); writeln('ingrese marca');readln(regAlta.marca); writeln('ingrese modelo');readln(regAlta.modelo); writeln('ingrese color');readln(regAlta.color); write(alta,regAlta); writeln('ingresa mas datos(s/n)');readln(tecla) end; close(alta)end;procedure ingSol(var solic:arAlta;var regSol:tregAlta);var tecla:char;begin assign(solic,'c:userstomasarch_pascalsolic.dat'); rewrite(solic); writeln('ingresa datos de solicitud');readln(tecla); while(tecla='s')do begin writeln('ingrese nro de solicitud');readln(regsol.nro); writeln('ingrese titular');readln(regSol.titular); writeln('ingrese marca');readln(regSol.marca); writeln('ingrese modelo');readln(regSol.modelo); writeln('ingrese color');readln(regSol.color); write(solic,regSol); writeln('ingresa mas datos(s/n)');readln(tecla) end; close(solic)end;procedure leer_alta(var F:arAlta;var reg:tregAlta;var fin_alta:boolean); begin fin_alta:=eof(F); if not(fin_alta)then read(F,reg) else fin_alta:=trueend;procedure leer_sol(var F:arAlta;var reg:tregAlta;var fin_sol:boolean); begin fin_sol:=eof(F); if not(fin_sol)then read(F,reg) else fin_sol:=trueend;procedure actualizar(var alta,solic,solic_n:arAlta);var regAlta,regSol:tregAlta;begin assign(alta,'c:userstomasarch_pascalalta.dat'); assign(solic,'c:userstomasarch_pascalsolic.dat'); assign(solic,'c:userstomasarch_pascalsolic_n.dat'); reset(alta);reset(solic);rewrite(solic_n); leer_sol(solic,regSol,finsol);leer_alta(alta,regAlta,finAlta); while(not(finSol))and(not(finAlta))do begin if(regSol.nro=regAlta.nro)or(regAlta.marca>4)or(regalta.modelo>3)or(regAlta.color>8)then begin leer_sol(solic,regSol,finsol); leer_alta(alta,regAlta,finalta) end else if(regSol.nro<regAlta.nro)then begin write(solic_n,regSol); leer_sol(solic,regSol,finsol) end else if(regAlta.nro<regSol.nro)and(regAlta.marca<=4)and(regAlta.modelo<=3)and(regAlta.color<=8)then begin write(solic_n,regAlta); leer_alta(alta,regAlta,finalta) end end; close(solic);close(alta);close(solic_n) end; procedure motivo_x_rech(var solic,alta:arAlta;var motivo:arrech);var regAlta,regSol:tregalta; regrech:tregrech;begin assign(alta,'c:userstomasarch_pascalalta.dat'); assign(solic,'c:userstomasarch_pascalsolic.dat'); assign(motivo,'c:userstomasarch_pascalmotivo.dat'); reset(alta);reset(solic);rewrite(motivo); leer_sol(solic,regSol,finsol);leer_alta(alta,regAlta,finalta); while(not(finsol))and(not(finalta))do begin if(regSol.nro=regAlta.nro)then begin regrech.nro:=regAlta.nro; regrech.titular:=regAlta.titular; regrech.motivo:='solicitud existente'; write(motivo,regrech); leer_sol(solic,regsol,finsol);leer_alta(alta,regAlta,finalta) end else if(regAlta.marca>4)then begin regrech.nro:=regAlta.nro; regrech.titular:=regAlta.titular; regrech.motivo:='marca invalida'; write(motivo,regrech); leer_alta(alta,regAlta,finalta) end else if(regAlta.modelo>3)then begin regrech.nro:=regAlta.nro; regrech.titular:=regAlta.titular; regrech.motivo:='modelo invalida'; write(motivo,regrech); leer_alta(alta,regAlta,finalta) end else if(regAlta.color>8)then begin regrech.nro:=regAlta.nro; regrech.titular:=regAlta.titular; regrech.motivo:='color invalido'; write(motivo,regrech); leer_alta(alta,regAlta,finalta) end end; close(solic);close(alta);close(motivo) end; procedure armar_solic(var marca:arMarca;var solic_n:arAlta);var regSol:tregAlta; regMarca:tregMarca;begin assign(solic_n,'c:userstomasarchivos_pascalsolic_n.dat'); assign(marca,'c:userstomasarchivos_pascalmarca.dat'); reset(solic_n);rewrite(marca); with(regMarca)do begin mod1M1:=0;mod2M2:=0;mod3M3:=0;color1M1:=0;color2M1:=0; color3M1:=0;color4M1:=0;color5M1:=0;color6M1:=0;color7M1:=0; color8M1:=0;mod1M2:=0;mod2M2:=0;mod3M2:=0;color1M2:=0;color2M2:=0;color3M2:=0;color4M2:=0; color5M2:=0;color6M2:=0;color7M2:=0;color8M2:=0;mod1M3:=0;mod2M3:=0;mod3M3:=0;color1M3:=0; color2M3:=0;color3M3:=0;color4M3:=0;color5M3:=0;color6M3:=0;color7M3:=0;color8M3:=0; mod1M4:=0;mod2M4:=0;mod3M4:=0;color1M4:=0;color2M4:=0;color3M4:=0;color4M4:=0;color5M4:=0; color6M4:=0;color7M4:=0;color8M4:=0 end; leer_sol(solic_n,regSol,finSol); while(not finSol)do begin with(regMarca)do begin if(regSol.marca=1)then begin case(regSol.modelo)of 1:inc(mod1M1); 2:inc(mod2M1); 3:inc(mod3M1) end; case(regSol.color)of 1:inc(color1M1); 2:inc(color2M1); 3:inc(color3M1); 4:inc(color4M1); 5:inc(color5M1); 6:inc(color6M1); 7:inc(color7M1); 8:inc(color8M1) end; write(marca,regMarca); leer_sol(solic,regSol,finsol) end else if(regSol.marca=2)then begin case(regSol.modelo)of 1:inc(mod1M2); 2:inc(mod2M2); 3:inc(mod3M2) end; case(regSol.color)of 1:inc(color1M2); 2:inc(color2M2); 3:inc(color3M2); 4:inc(color4M2); 5:inc(color5M2); 6:inc(color6M2); 7:inc(color7M2); 8:inc(color8M2) end; write(marca,regMarca); leer_sol(solic_n,regSol,finsol) end else if(regSol.marca=3)then begin case(regSol.modelo)of 1:inc(mod1M3); 2:inc(mod2M3); 3:inc(mod3M3) end; case(regSol.color)of 1:inc(color1M3); 2:inc(color2M3); 3:inc(color3M3); 4:inc(color4M3); 5:inc(color5M3); 6:inc(color6M3); 7:inc(color7M3); 8:inc(color8M3) end; write(marca,regMarca); leer_sol(solic_n,regSol,finsol) end else if(regSol.marca=4)then begin case(regSol.modelo)of 1:inc(mod1M4); 2:inc(mod2M4); 3:inc(mod3M4) end; case(regSol.color)of 1:inc(color1M4); 2:inc(color2M4); 3:inc(color3M4); 4:inc(color4M4); 5:inc(color5M4); 6:inc(color6M4); 7:inc(color7M4); 8:inc(color8M4) end; write(marca,regMarca); leer_sol(solic_n,regSol,finsol) end end end; close(solic_n); close(marca) end; procedure leer_marca(var marca:arMarca;regMarca:tregMarca;fin:boolean); begin fin:=eof(marca); if(not(fin))then read(marca,regMarca) else fin:=trueend;procedure leer_motivo(var motivo:arrech;regrech:tregrech;fin:boolean); begin fin:=eof(motivo); if(not(fin))then read(motivo,regrech) else fin:=trueend; procedure mostrar_motivo(var motivo:arrech);var regrech:tregrech;begin assign(motivo,'c:userstomasarchivos_pascalmotivo.dat'); reset(motivo); leer_motivo(motivo,regrech,finmotivo); while(not(finmotivo))do begin writeln(regrech.nro:10,regrech.titular:10,regrech.motivo:10); leer_motivo(motivo,regrech,finmotivo) end; close(motivo)end; procedure mostrar_sol(var marca:arMarca);var regMarca:tregMarca;begin assign(marca,'c:userstomasarchivos_pascalmarca.dat'); reset(marca); leer_marca(marca,regMarca,finMarca); while(not(finMarca))do begin with(regMarca)do begin writeln('marca 1',mod1M1:10,mod2M1:10,mod3M1:10,'':19,color1M1:10,color2M1:10,color3M1:10,color4M1:10,color5M1:10,color6M1:10,color7M1:10,color8M1:10); writeln('marca 2',mod1M2:10,mod2M2:10,mod3M2:10,'':19,color1M2:10,color2M2:10,color3M2:10,color4M2:10,color5M2:10,color6M2:10,color7M2:10,color8M2:10); writeln('marca 3',mod1M3:10,mod2M3:10,mod3M3:10,'':19,color1M3:10,color2M3:10,color3M3:10,color4M3:10,color5M3:10,color6M3:10,color7M3:10,color8M3:10); writeln('marca 4',mod1M4:10,mod2M4:10,mod3M4:10,'':19,color1M4:10,color2M4:10,color3M4:10,color4M4:10,color5M4:10,color6M4:10,color7M4:10,color8M4:10); end; leer_marca(marca,regMarca,finMarca) end; end; begin ingAlta(alta,regAlta); ingSol(solic,regSol); actualizar(alta,solic,solic_n); motivo_x_rech(solic,alta,motivo); armar_solic(marca,solic_n); mostrar_motivo(motivo); mostrar_sol(marca); readkeyend.
Navegación
Ir a la versión completa