Advertisement
Guest User

corte de control ejercicio 1

a guest
Oct 27th, 2012
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 5.29 KB | None | 0 0
  1. program Ejercicio1;
  2.  
  3. {Se tiene registrada la información de los exámenes finales de los alumnos de la Facultad.
  4. De cada alumno se conoce número de libreta, código de materia y nota obtenida, en un archivo
  5.  ordenado ascendentemente por número de libreta. Liste un renglón por alumno con el promedio
  6.   de notas e informe el total de alumnos.}
  7. uses
  8.   uses,crt;
  9. type
  10.      Tnotas = array[1..5] of real;
  11.     TMat = array[1..5] of string[12];
  12.     RAlumno = record
  13.         numLib : integer;
  14.       codMat : 1..5;
  15.       nota : Tnotas;
  16.     end;
  17.     FAlumno = file of RAlumno;
  18.  
  19.     Tarray = array[1..500] of RAlumno;
  20.  
  21. procedure inicializarMaterias(var v:TMat);
  22. begin
  23.     v[1] := 'Matematica';
  24.     v[2] := 'Lengua';
  25.     v[3] := 'Historia';
  26.     v[4] := 'Quimica';
  27.     v[5] := 'Fisica';
  28.  
  29. end;
  30.  
  31. procedure leerRegistro(var reg:RAlumno
  32.                       ;v1:TMat);
  33. var opc:char;len:integer;
  34. begin
  35.      clrscr;
  36.     write('Numero de libreta: ');
  37.     readln(reg.numLib);
  38.     len :=0;
  39.     repeat
  40.         repeat
  41.             write('Codigo de materia: ');
  42.             readln(reg.codMat);
  43.         until (reg.codMat in [1..5]);
  44.         writeln('Materia: ',v1[reg.codMat]);
  45.         write('Nota obtenida: ');
  46.         readln(reg.nota[reg.codMat]);
  47.       len := len + 1;
  48.       repeat
  49.         writeln('Desea agregar otra materia S/N: ');
  50.         readln(opc);
  51.          opc := upcase(opc);
  52.       until (opc in ['S','N']);
  53.     until (len > 5) or (opc = 'N');;
  54. end;
  55.  
  56. procedure carga(var a:FAlumno;var v1:TMat);
  57. var reg:RAlumno;opc : char;
  58. begin
  59.      rewrite(a);
  60.     repeat
  61.             clrscr;
  62.          inicializarMaterias(v1);
  63.             writeln('***Ingrese los datos de los alumnos***');
  64.             leerRegistro(reg,v1);
  65.          write(a,reg);
  66.          repeat
  67.             write('Desea agregar otro alumno S/N : ');
  68.             readln(opc);
  69.             opc := upcase(opc);
  70.          until (opc in ['S','N']);
  71.     until (opc = 'N');
  72.      close(a);
  73.     writeln('Presione ENTER para continuar');
  74.     readkey;
  75. end;
  76.  
  77. function leer(var a:FAlumno;var reg:RAlumno):boolean;
  78. begin
  79.     if eof (a) then begin
  80.           leer := true;
  81.     end else begin
  82.           read(a,reg);
  83.         leer:= false;
  84.     end;
  85. end;
  86.  
  87. function subirArch(var a:FAlumno
  88.                          ;var v:Tarray):integer;
  89. var  reg:RAlumno;i:integer;fin:boolean;
  90. begin
  91.       i := 0;
  92.      {$I-}reset(a);{$I+}
  93.      fin := leer(a,reg);
  94.      while (not fin)  do begin
  95.          i := i + 1;
  96.          v[i] := reg;
  97.          fin := leer(a,reg);
  98.      end;
  99.      close(a);
  100.      subirArch := i;
  101. end;
  102.  
  103. procedure ordenar(var v:Tarray;len:integer);
  104. var aux:RAlumno;i:integer;ordenado:boolean;
  105. begin
  106.      ordenado := false;
  107.      while not ordenado do begin
  108.             ordenado := true;
  109.             for i:=1 to len-1 do begin
  110.              if (v[i].numLib > v[i+1].numLib) then begin
  111.                  aux := v[i+1];
  112.                  v[i+1] := v[i];
  113.                  v[i] := aux;
  114.                  ordenado := false;
  115.              end;
  116.          end;
  117.      end;
  118. end;
  119.  
  120. procedure bajaArch(var a:FAlumno;v:Tarray;len:integer);
  121. var i:integer;
  122. begin
  123.     rewrite(a);
  124.     i := 1;
  125.     while (i <= len) do begin
  126.           write(a,v[i]);
  127.         i := i + 1;
  128.     end;
  129.     close(a);
  130. end;
  131.  
  132.  
  133. procedure listado(var a:FAlumno);
  134. var totAlum : integer;prom,total :real;fin  :boolean;
  135. var reg:RAlumno;nroAnt:integer;cantNotas :integer;
  136. begin
  137.       clrscr;
  138.       {$I-}reset(a);{$I+}
  139.      if ioresult <> 0 then begin
  140.             writeln('El archivo no existe');
  141.          writeln('Presione ENTER para continuar');
  142.          readkey;
  143.      end else begin
  144.          writeln('***Listado de notas***');
  145.          fin := leer(a,reg);
  146.          totAlum := 0;
  147.          while not fin do begin
  148.              nroAnt := reg.numLib;
  149.              write('Alumno: ',reg.numLib);
  150.              total := 0;
  151.              cantNotas :=0;
  152.              prom := 0;
  153.              while (nroAnt = reg.numLib) and (not fin) do begin
  154.                     total := total + reg.nota[reg.codMat];
  155.                   cantNotas := cantNotas + 1;
  156.                   fin := leer(a,reg);
  157.              end;
  158.              prom := total / cantNotas;
  159.              write(', con promedio de notas de: ',prom:4:2);
  160.              writeln;
  161.              writeln('------------------------------------');
  162.              totAlum := totAlum + 1;
  163.          end;
  164.          writeln('Cantidad total de alumnos: ',totAlum);
  165.      end;
  166.      close(a);
  167.      writeln('Presione ENTER para continuar');
  168.      readkey;
  169. end;
  170.  
  171. procedure asignacion(var a:FAlumno);
  172. begin
  173.     assign(a,'Alumnos.dat');
  174. end;
  175.  
  176. procedure menu(var a:FAlumno;v1:TMat);
  177. var  salir:boolean;len:integer;v:Tarray;opc:char;
  178. begin
  179.         len :=0;
  180.       asignacion(a);
  181.      repeat
  182.      clrscr;
  183.      salir := false;
  184.      writeln('----MENU GENERAL---');
  185.      writeln('1) Crear Archivo (sobreescribe)');
  186.      writeln('2) Listado de Notas');
  187.      writeln('3) Salir');
  188.      writeln;
  189.      repeat
  190.             write('Escoja una opcion: ');
  191.             readln(opc);
  192.      until (opc in ['1','2','3']);
  193.      case opc of
  194.             '1' :  begin
  195.                 carga(a,v1);
  196.                  len := subirArch(a,v);
  197.                 ordenar(v,len);
  198.                 bajaArch(a,v,len);
  199.                 end;
  200.          '2' : listado(a);
  201.          '3' : salir := true;
  202.      end;
  203.      until (salir);
  204.  
  205. end;
  206. // programa principal
  207. var  Alumnos : FAlumno;materias:TMat;
  208. begin
  209.      menu(Alumnos,materias);
  210. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement