Advertisement
Guest User

Ingresantes

a guest
Oct 13th, 2012
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.83 KB | None | 0 0
  1. program ingresantes;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.   SysUtils,console;
  7.  
  8. const  
  9.     cantCarreras = 10;
  10.     NOM_ARCHIVO = 'INGRESANTES.dat';
  11. type
  12.     RFecha = record
  13.         dia : word;
  14.         mes : word;
  15.         anio : word;
  16.     end;
  17.     RIngresante = record
  18.         carrera : string[30];
  19.         nombre : string[20];
  20.         apell : string[20]; // apellido
  21.         fecNac : RFecha;
  22.         loc : string[30]; //localidad
  23.         dni : string[12]; //documento nacional de identidad
  24.     end;
  25.     FAlumnos =  file of RIngresante;
  26.     TarrInteger = array[1..CantCarreras] of integer;
  27.     TarrString = array[1..CantCarreras] of string;
  28.  
  29. procedure cargaCarreras(var arrCarr:TarrString);
  30. //cargo en arrCarr las carreras de la facultad
  31. begin
  32.     arrCarr[1]:= 'Analista de Sistemas';
  33.    arrCarr[2] := 'Licenciatura en Sistemas';
  34.    arrCarr[3] := 'Farmaceutica';
  35.    arrCarr[4] := 'Profesorado en Matematica';
  36.    arrCarr[5] := 'Profesorado en Fisica';
  37.    arrCarr[6] := 'Profesorado en Biologia';
  38.    arrCarr[7] := 'Profesorado en Quimica';
  39.    arrCarr[8] := 'Ingenieria en Alimentos';
  40.    arrCarr[9] := 'Ingenieria Quimica';
  41.    arrCarr[10] := 'Licenciatura en Genetica';
  42. end;
  43.  
  44. procedure InicializarArray(var arr:TarrInteger);
  45. var i : integer;
  46. begin
  47.     for i := 1 to 10 do begin
  48.         arr[i] := 0;
  49.     end;
  50. end;
  51.  
  52. function leer(var arch:FAlumnos
  53.                     ;var reg:RIngresante):boolean;
  54. begin
  55.     if eof(arch) then begin
  56.         leer:= true;
  57.     end else begin
  58.         read(arch,reg);
  59.         leer := false;
  60.     end;
  61. end;
  62.  
  63. procedure imprimirVec(arr:TarrInteger
  64.                             ;arrCarr:TarrString);
  65. var i : integer;
  66. begin
  67.     for i := 1 to CantCarreras do begin
  68.         if (arr[i] <> 0) then begin
  69.             writeln(arrCarr[i],' ,','se inscribieron ',arr[i]);
  70.         end;
  71.     end;
  72. end;
  73.  
  74. function MayCantAlum(arr:TarrInteger):integer;
  75. // devuelve  la posicion en el TarrString con mayor cantidad de inscriptos
  76. var mayor : integer;
  77. var pos : integer; i : integer;
  78. begin
  79.     mayor := 0; pos := 0;
  80.     for i := 1 to CantCarreras do begin
  81.         if (arr[i] > mayor) then begin
  82.             mayor := arr[i];
  83.             pos := i;
  84.         end;
  85.     end;
  86.    MayCantAlum := pos;
  87. end;
  88.  
  89. procedure ImprimirMayCantAlum(arr:TarrInteger
  90.                                     ;arrCarr:TarrString);
  91. var pos : integer;
  92. begin
  93.      pos := MayCantAlum(arr);
  94.      writeln('La carrera de ',arrCarr[pos],' es la que mayor cantidad de alumnos inscriptos tiene ',arr[pos]);
  95. end;
  96.  
  97. procedure procesarIngresante(reg:RIngresante
  98.                                     ;var arr:TarrInteger
  99.                            ;arrCarr:TarrString);
  100. // aumenta la cantidad de inscriptos en el TarrInteger segun lo leido en el archivo
  101. var   i : integer;
  102. begin
  103.     i := 1;
  104.     while (i <= CantCarreras) and (reg.carrera <> arrCarr[i]) do begin
  105.             i := i + 1;
  106.     end;
  107.     arr[i] := arr[i] + 1;
  108. end;
  109.  
  110. //PRINCIPAL
  111. var arch : FAlumnos;
  112. var registro : RIngresante;
  113. var fin : boolean;  arr:TarrInteger;
  114. var CarreraAnt : string; arrCarreras : TarrString;
  115. BEGIN
  116.         assign(arch,NOM_ARCHIVO);
  117.       {$I-}reset(arch);{$I+}
  118.       // si el archivo no existe salgo del programa con halt
  119.       if ioresult <> 0 then begin
  120.         writeln('No existe el archivo');
  121.          halt(1);
  122.       end;
  123.       // incializo los valores del array en 0
  124.       InicializarArray(arr);
  125.       fin := leer(arch,registro);
  126.       // Inicializo el array con las carreras de la facultad
  127.       cargaCarreras(arrCarreras);
  128.       while (not fin) do begin
  129.         // asigno a CarreraAnt el registro leido y lo utilizo como var de corte
  130.         CarreraAnt := registro.Carrera;
  131.          while (not fin) and (registro.Carrera = CarreraAnt) do begin
  132.                 procesarIngresante(registro,arr,arrCarreras);
  133.                fin := leer(arch,registro);
  134.          end;
  135.         end;
  136.       // imprimo la carrera con mayor cantidad de inscriptos
  137.       ImprimirMayCantAlum(arr,arrCarreras);
  138.       writeln;
  139.       // imprimo el vector
  140.       imprimirVec(arr,arrCarreras);
  141.       // cierro el archivo
  142.       close(arch);
  143.       readkey();
  144. END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement