Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program pregunta2;
- type TArrHoras= array [7..24] of Integer;
- TArrHorario=array [1..101] of TArrHoras;
- TArrEntero=array[1..51] of Integer;
- TArrStr=array[1..51] of String;
- procedure PrepararArchivos(var archIn,archOut,archAulas:Text);
- var nomArchIn,nomArchOut,nomArchAulas: String;
- begin
- writeln('Ingrese el nombre del archivo a analizar:');
- readln(nomArchIn);
- assign(archIn,nomArchIn);
- writeln('Ingrese el nombre con el que desea guardar el horario:');
- readln(nomArchOut);
- assign(archOut,nomArchOut);
- writeln('Ingrese el nombre del archivo de aulas:');
- readln(nomArchAulas);
- assign(archAulas,nomArchAulas);
- end;
- procedure LlenarArreglosProf(var archIn,archAulas: Text;var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
- var nombreProf,categoria,codAula: TArrStr; var cantProf,cantAulas: Integer);
- begin
- reset(archIn);reset(archAulas);
- cantProf:=0; cantAulas:=0;
- while not eof(archIn) do begin
- inc(cantProf);
- readln(archIn,codigo[cantProf]);
- readln(archIn,nombreProf[cantProf]);
- readln(archIn,categoria[cantProf]);
- readln(archIn,dd[cantProf],mm[cantProf],aa[cantProf]);
- readln(archIn,horaIni[cantProf],nhrs[cantProf]);
- end;
- while not eof(archAulas) do begin
- inc(cantAulas);
- readln(archAulas,codAula[cantAulas]);
- end;
- close(archIn);close(archAulas);
- end;
- procedure LlenarArchSinAsignar(var arch: Text;
- var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
- var nombreProf,categoria: TArrStr;
- i: Integer);
- begin
- append(arch);
- writeln(arch,codigo[i]);
- writeln(arch,nombreProf[i]);
- writeln(arch,categoria[i]);
- writeln(arch,dd[i],mm[i],aa[i]);
- writeln(arch,horaIni[i],nhrs[i]);
- end;
- procedure LlenarHorario(var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
- var nombreProf,categoria: TArrStr; cantProf,cantAulas: Integer;
- var horario: TArrHorario);
- var i,j,k: Integer;
- aulaEncontrada: Boolean;
- archSinAsignar:Text;
- begin
- assign(archSinAsignar,'SinAsignar.txt');
- rewrite(archSinAsignar);
- for i:=1 to cantProf do begin
- j:=0;
- aulaEncontrada:=false;
- while (not aulaEncontrada) and (j<cantAulas) do begin
- inc(j);
- k:=0;
- repeat
- inc(k);
- if horario[j][horaIni[i]+k-1]<>0 then aulaEncontrada:=false else aulaEncontrada:=true;
- until (aulaEncontrada=false) or (k=nhrs[i]);
- end;
- if aulaEncontrada then begin
- for k:=1 to nhrs[i] do begin
- horario[j][horaIni[i]+k-1]:=codigo[i];
- end;
- end else begin
- LlenarArchSinAsignar(archSinAsignar,codigo,dd,mm,aa,nhrs,horaIni,nombreProf,categoria,i);
- end;
- end;
- close(archSinAsignar);
- end;
- procedure HacerReporteHorario(var archOut:Text;var horario: TArrHorario;var codAula: TArrStr;
- cantAulas: Integer);
- var i,j: Integer;
- begin
- rewrite(archOut);
- writeln(archOut,'TABLA DE OCUPACION DE AULAS':40);
- write(archOut,'Aulas│':7,' ');
- for i:=7 to 23 do write(archOut,i:2,' │ ');
- writeln(archOut,' <-Horas');
- for i:=1 to cantAulas do begin
- write(archOut,codAula[i]:5,'│');
- for j:=7 to 23 do begin
- if horario[i][j]=0 then write(archOut,' ') else write(archOut,'▓▓▓▓▓▓');
- write(archOut,'│')
- end;
- writeln(archOut);
- writeln(archOut);
- end;
- writeln(archOut);
- writeln(archOut,'Aula ocupada -> ▓▓▓▓▓');
- close(archOut);
- end;
- procedure HorasDeOcupacion(var codigo,nhrs,horaIni: TArrEntero;
- var nombreProf,categoria,codAula: TArrStr;
- codigoAula: String;cantProf,cantAulas: Integer;
- var horario TArrHorario);
- var i,j,codAnterior: Integer;
- arch:Text;
- begin
- assign(arch,'ReporteOcupacion.txt');
- rewrite(arch);
- i:=0;
- repeat
- inc(i);
- until codAula[i]=codigoAula;
- codAnterior:=0;
- for j:=7 to 23 do begin
- if (horario[i][j]<>0) and (horario[i][j]<>codAnterior) then begin
- k=0;
- repeat
- inc(k);
- until
- writeln(arch,horaIni[i]);
- end;
- end;
- procedure Consulta(var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
- var nombreProf,categoria,codAula: TArrStr;
- cantProf,cantAulas: Integer;
- var horario: TArrHorario);
- var codigoAula,tipoConsulta: String;
- begin
- writeln('Ingrese el codigo del aula a consultar:');
- readln(codigoAula);
- writeln('Ingrese el tipo de consulta("Horas de ocupacion" u "Horas Libres"):');
- readln(tipoConsulta);
- case tipoConsulta of
- 'Horas de ocupacion':HorasDeOcupacion(codigo,nhrs,horaIni,nombreProf,categoria,codAula,
- codigoAula,cantProf,cantAulas,horario);
- 'Horas Libres':HorasLibres(horario,codAula,codigoAula);
- end;
- end;
- var codigo,dd,mm,aa,nhrs,horaIni: TArrEntero;
- nombreProf,categoria,codAula: TArrStr;
- cantProf,cantAulas: Integer;
- horario:TArrHorario;
- archIn,archOut,archAulas: Text;
- begin
- PrepararArchivos(archIn,archOut,archAulas);
- LlenarArreglosProf(archIn,archAulas,codigo,dd,mm,aa,nhrs,horaIni,nombreProf,categoria,codAula,cantProf,cantAulas);
- LlenarHorario(codigo,dd,mm,aa,nhrs,horaIni,nombreProf,categoria,cantProf,cantAulas,horario);
- HacerReporteHorario(archOut,horario,codAula,cantAulas);
- Consulta(codigo,dd,mm,aa,nhrs,horaIni,nombreProf,categoria,codAula,cantProf,cantAulas,horario);
- end.
Advertisement
Add Comment
Please, Sign In to add comment