- 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:=true 
- end; 
- 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:=true 
- end; 
- 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:=true 
- end; 
- procedure leer_motivo(var motivo:arrech;regrech:tregrech;fin:boolean); 
-   
- begin 
-      fin:=eof(motivo); 
-      if(not(fin))then 
-         read(motivo,regrech) 
-      else 
-         fin:=true 
- end; 
-   
- 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); 
-      readkey 
- end. 
-   
-   
-