karlangadas

pregunta 1 pc4 2015-2

Jul 12th, 2016
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.71 KB | None | 0 0
  1. program pregunta1;
  2. type TArrEntero = array [1..61] of Integer;
  3.      TArrStr = array [1..61] of String;
  4.  
  5. procedure PrepararArchivos(var archIn,archOut:Text);
  6. var nomArchIn,nomArchOut: String;
  7. begin
  8.   writeln('Ingrese el nombre del archivo a ordenar:');
  9.   readln(nomArchIn);
  10.   assign(archIn,nomArchIn);
  11.   writeln('Ingrese el nombre con el que desea guardar el nuevo archivo:');
  12.   readln(nomArchOut);
  13.   assign(archOut,nomArchOut);
  14. end;
  15.  
  16. procedure LeerDatoPorProfe(var archIn: Text; var auxcodigo,auxdd,auxmm,auxaa,auxhoraIni,auxnhrs,auxcatNum: Integer;
  17.                          var auxnombreProf,auxcategoria: String);
  18. begin
  19.   readln(archIn,auxcodigo);
  20.   readln(archIn,auxnombreProf);
  21.   readln(archIn,auxcategoria);
  22.   readln(archIn,auxdd,auxmm,auxaa);
  23.   readln(archIn,auxhoraIni,auxnhrs);
  24.  
  25.   case auxcategoria of
  26.     'Principal': auxcatNum:=4;
  27.     'Asociado': auxcatNum:=3;
  28.     'Nombrado': auxcatNum:=2;
  29.     'Contratado': auxcatNum:=1;
  30.   end;
  31. end;
  32.  
  33. procedure OrdenarArreglos(auxcodigo,auxdd,auxmm,auxaa,auxhoraIni,auxnhrs,auxcatNum: Integer;
  34.                           auxnombreProf,auxcategoria: String;
  35.                           var codigo,dd,mm,aa,horaIni,nhrs,catNum: TArrEntero;
  36.                           var nombreProf,categoria: TArrStr; var cantProf: Integer);
  37. var i,j,k: Integer;
  38.  
  39. begin
  40.   k:=cantProf;
  41.   while (k>0) and ((catNum[k]<auxcatNum) or ((catNum[k]=auxcatNum) and ((dd[k]+mm[k]*100+aa[k]*10000)>(auxdd+auxmm*100+auxaa*10000)))
  42.         or ((catNum[k]=auxcatNum) and ((dd[k]+mm[k]*100+aa[k]*10000)=(auxdd+auxmm*100+auxaa*10000)) and (nhrs[k]<auxnhrs))) do begin
  43.  
  44.     codigo[k+1]:=codigo[k];
  45.     dd[k+1]:=dd[k];
  46.     mm[k+1]:=mm[k];
  47.     aa[k+1]:=aa[k];
  48.     horaIni[k+1]:=horaIni[k];
  49.     nhrs[k+1]:=nhrs[k];
  50.     catNum[k+1]:=catNum[k];
  51.     nombreProf[k+1]:=nombreProf[k];
  52.     categoria[k+1]:=categoria[k];
  53.  
  54.     dec(k)
  55.   end;
  56.  
  57.   codigo[k+1]:=auxcodigo;
  58.   dd[k+1]:=auxdd;
  59.   mm[k+1]:=auxmm;
  60.   aa[k+1]:=auxaa;
  61.   horaIni[k+1]:=auxhoraIni;
  62.   nhrs[k+1]:=auxnhrs;
  63.   catNum[k+1]:=auxcatNum;
  64.   nombreProf[k+1]:=auxnombreProf;
  65.   categoria[k+1]:=auxcategoria;
  66.   inc(cantProf);
  67. end;
  68.  
  69. procedure CrearNuevoArchivo(var archOut: Text; var codigo,dd,mm,aa,horaIni,nhrs: TArrEntero;
  70.                             var nombreProf,categoria: TArrStr; var cantProf: Integer);
  71. var i: Integer;
  72. begin
  73.   rewrite(archOut);
  74.   for i:=1 to cantProf do begin
  75.     writeln(archOut,codigo[i]);
  76.     writeln(archOut,nombreProf[i]);
  77.     writeln(archOut,categoria[i]);
  78.     writeln(archOut,dd[i],' ',mm[i],' ',aa[i]);
  79.     writeln(archOut,horaIni[i],' ',nhrs[i]);
  80.  
  81.   end;
  82.   close(archOut);
  83. end;
  84.  
  85. procedure ProcesarDatos(var archIn: Text; var codigo,dd,mm,aa,horaIni,nhrs,catNum: TArrEntero;
  86.                         var nombreProf,categoria: TArrStr; var cantProf: Integer);
  87.  
  88. var auxcod,auxdd,auxmm,auxaa,auxhoraIni,auxnhrs,auxcatNum: Integer;
  89.     auxnombreProf,auxcategoria:String;
  90.  
  91. begin
  92.   reset(archIn);
  93.   cantProf:=0;
  94.   while not eof(archIn) do begin
  95.     LeerDatoPorProfe(archIn,auxcod,auxdd,auxmm,auxaa,auxhoraIni,auxnhrs,auxcatNum,
  96.                    auxnombreProf,auxcategoria);
  97.     OrdenarArreglos(auxcod,auxdd,auxmm,auxaa,auxhoraIni,auxnhrs,auxcatNum,
  98.                     auxnombreProf,auxcategoria,codigo,dd,mm,aa,horaIni,nhrs,
  99.                     catNum,nombreProf,categoria,cantProf);
  100.   end;
  101.   close(archIn);
  102. end;
  103.  
  104. var codigo,dd,mm,aa,horaIni,nhrs,catNum: TArrEntero;
  105.     nombreProf,categoria: TArrStr;
  106.     cantProf: Integer;
  107.     archIn,archOut: Text;
  108. begin
  109.   PrepararArchivos(archIn,archOut);
  110.   ProcesarDatos(archIn,codigo,dd,mm,aa,horaIni,nhrs,catNum,nombreProf,categoria,cantProf);
  111.   CrearNuevoArchivo(archOut,codigo,dd,mm,aa,horaIni,nhrs,nombreProf,categoria,cantProf);
  112. end.
Advertisement
Add Comment
Please, Sign In to add comment