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

[0] Índice de Mensajes

Ir a la versión completa