Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ingresantes;
- {$APPTYPE CONSOLE}
- uses
- SysUtils,console;
- const
- cantCarreras = 10;
- NOM_ARCHIVO = 'INGRESANTES.dat';
- type
- RFecha = record
- dia : word;
- mes : word;
- anio : word;
- end;
- RIngresante = record
- carrera : string[30];
- nombre : string[20];
- apell : string[20]; // apellido
- fecNac : RFecha;
- loc : string[30]; //localidad
- dni : string[12]; //documento nacional de identidad
- end;
- FAlumnos = file of RIngresante;
- TarrInteger = array[1..CantCarreras] of integer;
- TarrString = array[1..CantCarreras] of string;
- procedure cargaCarreras(var arrCarr:TarrString);
- //cargo en arrCarr las carreras de la facultad
- begin
- arrCarr[1]:= 'Analista de Sistemas';
- arrCarr[2] := 'Licenciatura en Sistemas';
- arrCarr[3] := 'Farmaceutica';
- arrCarr[4] := 'Profesorado en Matematica';
- arrCarr[5] := 'Profesorado en Fisica';
- arrCarr[6] := 'Profesorado en Biologia';
- arrCarr[7] := 'Profesorado en Quimica';
- arrCarr[8] := 'Ingenieria en Alimentos';
- arrCarr[9] := 'Ingenieria Quimica';
- arrCarr[10] := 'Licenciatura en Genetica';
- end;
- procedure InicializarArray(var arr:TarrInteger);
- var i : integer;
- begin
- for i := 1 to 10 do begin
- arr[i] := 0;
- end;
- end;
- function leer(var arch:FAlumnos
- ;var reg:RIngresante):boolean;
- begin
- if eof(arch) then begin
- leer:= true;
- end else begin
- read(arch,reg);
- leer := false;
- end;
- end;
- procedure imprimirVec(arr:TarrInteger
- ;arrCarr:TarrString);
- var i : integer;
- begin
- for i := 1 to CantCarreras do begin
- if (arr[i] <> 0) then begin
- writeln(arrCarr[i],' ,','se inscribieron ',arr[i]);
- end;
- end;
- end;
- function MayCantAlum(arr:TarrInteger):integer;
- // devuelve la posicion en el TarrString con mayor cantidad de inscriptos
- var mayor : integer;
- var pos : integer; i : integer;
- begin
- mayor := 0; pos := 0;
- for i := 1 to CantCarreras do begin
- if (arr[i] > mayor) then begin
- mayor := arr[i];
- pos := i;
- end;
- end;
- MayCantAlum := pos;
- end;
- procedure ImprimirMayCantAlum(arr:TarrInteger
- ;arrCarr:TarrString);
- var pos : integer;
- begin
- pos := MayCantAlum(arr);
- writeln('La carrera de ',arrCarr[pos],' es la que mayor cantidad de alumnos inscriptos tiene ',arr[pos]);
- end;
- procedure procesarIngresante(reg:RIngresante
- ;var arr:TarrInteger
- ;arrCarr:TarrString);
- // aumenta la cantidad de inscriptos en el TarrInteger segun lo leido en el archivo
- var i : integer;
- begin
- i := 1;
- while (i <= CantCarreras) and (reg.carrera <> arrCarr[i]) do begin
- i := i + 1;
- end;
- arr[i] := arr[i] + 1;
- end;
- //PRINCIPAL
- var arch : FAlumnos;
- var registro : RIngresante;
- var fin : boolean; arr:TarrInteger;
- var CarreraAnt : string; arrCarreras : TarrString;
- BEGIN
- assign(arch,NOM_ARCHIVO);
- {$I-}reset(arch);{$I+}
- // si el archivo no existe salgo del programa con halt
- if ioresult <> 0 then begin
- writeln('No existe el archivo');
- halt(1);
- end;
- // incializo los valores del array en 0
- InicializarArray(arr);
- fin := leer(arch,registro);
- // Inicializo el array con las carreras de la facultad
- cargaCarreras(arrCarreras);
- while (not fin) do begin
- // asigno a CarreraAnt el registro leido y lo utilizo como var de corte
- CarreraAnt := registro.Carrera;
- while (not fin) and (registro.Carrera = CarreraAnt) do begin
- procesarIngresante(registro,arr,arrCarreras);
- fin := leer(arch,registro);
- end;
- end;
- // imprimo la carrera con mayor cantidad de inscriptos
- ImprimirMayCantAlum(arr,arrCarreras);
- writeln;
- // imprimo el vector
- imprimirVec(arr,arrCarreras);
- // cierro el archivo
- close(arch);
- readkey();
- END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement