karlangadas

pregunta 2 pc4 2015-2

Jul 12th, 2016
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.54 KB | None | 0 0
  1. program pregunta2;
  2. type TArrHoras= array [7..24] of Integer;
  3.      TArrHorario=array [1..101] of TArrHoras;
  4.      TArrEntero=array[1..51] of Integer;
  5.      TArrStr=array[1..51] of String;
  6.  
  7.  
  8. procedure PrepararArchivos(var archIn,archOut,archAulas:Text);
  9. var nomArchIn,nomArchOut,nomArchAulas: String;
  10. begin
  11.   writeln('Ingrese el nombre del archivo a analizar:');
  12.   readln(nomArchIn);
  13.   assign(archIn,nomArchIn);
  14.   writeln('Ingrese el nombre con el que desea guardar el horario:');
  15.   readln(nomArchOut);
  16.   assign(archOut,nomArchOut);
  17.   writeln('Ingrese el nombre del archivo de aulas:');
  18.   readln(nomArchAulas);
  19.   assign(archAulas,nomArchAulas);
  20.  
  21. end;
  22.  
  23. procedure LlenarArreglosProf(var archIn,archAulas: Text;var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
  24.                              var nombreProf,categoria,codAula: TArrStr; var cantProf,cantAulas: Integer);
  25. begin
  26.   reset(archIn);reset(archAulas);
  27.   cantProf:=0; cantAulas:=0;
  28.   while not eof(archIn) do begin
  29.     inc(cantProf);
  30.     readln(archIn,codigo[cantProf]);
  31.     readln(archIn,nombreProf[cantProf]);
  32.     readln(archIn,categoria[cantProf]);
  33.     readln(archIn,dd[cantProf],mm[cantProf],aa[cantProf]);
  34.     readln(archIn,horaIni[cantProf],nhrs[cantProf]);
  35.   end;
  36.  
  37.   while not eof(archAulas) do begin
  38.     inc(cantAulas);
  39.     readln(archAulas,codAula[cantAulas]);
  40.   end;
  41.   close(archIn);close(archAulas);
  42. end;
  43.  
  44. procedure LlenarArchSinAsignar(var arch: Text;
  45.                                var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
  46.                                var nombreProf,categoria: TArrStr;
  47.                                i: Integer);
  48. begin
  49.   append(arch);
  50.   writeln(arch,codigo[i]);
  51.   writeln(arch,nombreProf[i]);
  52.   writeln(arch,categoria[i]);
  53.   writeln(arch,dd[i],mm[i],aa[i]);
  54.   writeln(arch,horaIni[i],nhrs[i]);
  55.  
  56. end;
  57.  
  58.  
  59.  
  60. procedure LlenarHorario(var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
  61.                         var nombreProf,categoria: TArrStr; cantProf,cantAulas: Integer;
  62.                         var horario: TArrHorario);
  63. var i,j,k: Integer;
  64.     aulaEncontrada: Boolean;
  65.     archSinAsignar:Text;
  66. begin
  67.   assign(archSinAsignar,'SinAsignar.txt');
  68.   rewrite(archSinAsignar);
  69.   for i:=1 to cantProf do begin
  70.     j:=0;
  71.     aulaEncontrada:=false;
  72.     while (not aulaEncontrada) and (j<cantAulas) do begin
  73.       inc(j);
  74.       k:=0;
  75.       repeat
  76.         inc(k);
  77.         if horario[j][horaIni[i]+k-1]<>0 then aulaEncontrada:=false else aulaEncontrada:=true;
  78.       until (aulaEncontrada=false) or (k=nhrs[i]);
  79.     end;
  80.  
  81.     if aulaEncontrada then begin
  82.       for k:=1 to nhrs[i] do begin
  83.         horario[j][horaIni[i]+k-1]:=codigo[i];
  84.       end;
  85.     end else begin
  86.       LlenarArchSinAsignar(archSinAsignar,codigo,dd,mm,aa,nhrs,horaIni,nombreProf,categoria,i);
  87.     end;
  88.   end;
  89.   close(archSinAsignar);
  90. end;
  91.  
  92. procedure HacerReporteHorario(var archOut:Text;var horario: TArrHorario;var codAula: TArrStr;
  93.                               cantAulas: Integer);
  94. var i,j: Integer;
  95. begin
  96.   rewrite(archOut);
  97.   writeln(archOut,'TABLA DE OCUPACION DE AULAS':40);
  98.   write(archOut,'Aulas│':7,'  ');
  99.   for i:=7 to 23 do write(archOut,i:2,'  │  ');
  100.   writeln(archOut,' <-Horas');
  101.  
  102.   for i:=1 to cantAulas do begin
  103.     write(archOut,codAula[i]:5,'│');
  104.  
  105.     for j:=7 to 23 do begin
  106.       if horario[i][j]=0 then write(archOut,'      ') else write(archOut,'▓▓▓▓▓▓');
  107.       write(archOut,'│')
  108.     end;
  109.     writeln(archOut);
  110.     writeln(archOut);
  111.   end;
  112.   writeln(archOut);
  113.   writeln(archOut,'Aula ocupada -> ▓▓▓▓▓');
  114.   close(archOut);
  115. end;
  116.  
  117.  
  118. procedure HorasDeOcupacion(var codigo,nhrs,horaIni: TArrEntero;
  119.                            var nombreProf,categoria,codAula: TArrStr;
  120.                            codigoAula: String;cantProf,cantAulas: Integer;
  121.                            var horario TArrHorario);
  122. var i,j,codAnterior: Integer;
  123.     arch:Text;
  124. begin
  125.   assign(arch,'ReporteOcupacion.txt');
  126.   rewrite(arch);
  127.   i:=0;
  128.   repeat
  129.   inc(i);
  130.   until codAula[i]=codigoAula;
  131.  
  132.   codAnterior:=0;
  133.   for j:=7 to 23 do begin
  134.     if (horario[i][j]<>0) and (horario[i][j]<>codAnterior) then begin
  135.     k=0;
  136.     repeat
  137.     inc(k);
  138.     until
  139.     writeln(arch,horaIni[i]);
  140.   end;
  141.  
  142. end;
  143.  
  144.  
  145.  
  146.  
  147. procedure Consulta(var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
  148.                    var nombreProf,categoria,codAula: TArrStr;
  149.                    cantProf,cantAulas: Integer;
  150.                    var horario: TArrHorario);
  151.  
  152. var codigoAula,tipoConsulta: String;
  153. begin
  154.   writeln('Ingrese el codigo del aula a consultar:');
  155.   readln(codigoAula);
  156.   writeln('Ingrese el tipo de consulta("Horas de ocupacion" u "Horas Libres"):');
  157.   readln(tipoConsulta);
  158.   case tipoConsulta of
  159.     'Horas de ocupacion':HorasDeOcupacion(codigo,nhrs,horaIni,nombreProf,categoria,codAula,
  160.                                           codigoAula,cantProf,cantAulas,horario);
  161.     'Horas Libres':HorasLibres(horario,codAula,codigoAula);
  162.   end;
  163.  
  164. end;
  165.  
  166. var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
  167.     nombreProf,categoria,codAula: TArrStr;
  168.     cantProf,cantAulas: Integer;
  169.     horario:TArrHorario;
  170.     archIn,archOut,archAulas: Text;
  171.  
  172. begin
  173.   PrepararArchivos(archIn,archOut,archAulas);
  174.   LlenarArreglosProf(archIn,archAulas,codigo,dd,mm,aa,nhrs,horaIni,nombreProf,categoria,codAula,cantProf,cantAulas);
  175.   LlenarHorario(codigo,dd,mm,aa,nhrs,horaIni,nombreProf,categoria,cantProf,cantAulas,horario);
  176.   HacerReporteHorario(archOut,horario,codAula,cantAulas);
  177.   Consulta(codigo,dd,mm,aa,nhrs,horaIni,nombreProf,categoria,codAula,cantProf,cantAulas,horario);
  178. end.
Advertisement
Add Comment
Please, Sign In to add comment