Poblacion+bilbaina

=__**Ejercicio de la población bilbaina**__=

Dado un fichero conteniendo el censo de la población de Bilbao, se pide escribir un programa que cree un fichero que contenga la información referente a las personas con más de 60 años, o que los cumplan dentro del año actual, (dicha información no deberá borrarse del fichero original).

El programa, finalmente, deberá calcular el porcentaje que suponen estas personas respecto del total del censo.

Por cada persona censada los datos almacenados son: >> -Nombre >> -Primer apellido >> -Segundo apelldio >> -Domicilio >> -Año de nacimiento

code format="pascal" PROGRAM Poblacion_Bilbao ; USES Crt, SysUtils ; CONST iLIMITE  = 60 ; TYPE tsCadenas  = STRING [40] ;

trgPersonas = RECORD sNombre, sApellido1, sApellido2, sDomicilio : tsCadenas ; iAnyoNacim            : Integer END ;

tfbrgFicherosCenso = FILE OF trgPersonas ;

PROCEDURE CrearFicheroMayores (sNomFichCenso,                            sNomFichMayores : tsCadenas ;                              iAnyoActual     : Integer) ; VAR fbrgFichCenso, fbrgFichMayores : tfbrgFicherosCenso ; rgPersona                     : trgPersonas ; BEGIN Assign (fbrgFichCenso, sNomFichCenso) ; Reset  (fbrgFichCenso) ;

Assign (fbrgFichMayores, sNomFichMayores) ; Rewrite (fbrgFichMayores) ;

WHILE NOT Eof (fbrgFichCenso) DO      BEGIN Read (fbrgFichCenso, rgPersona) ;

IF (iAnyoActual - rgPersona.iAnyoNacim) > iLIMITE THEN Write (fbrgFichMayores, rgPersona) END ; Close (fbrgFichCenso) ; Close (fbrgFichMayores) END ; FUNCTION fnrPorcentaje (sNomFichMayores,                      sNomFichCenso : tsCadenas) : Real ; VAR fbrgFichMayores, fbrgFichCenso : tfbrgFicherosCenso ; BEGIN Assign (fbrgFichCenso, sNomFichCenso) ; Reset (fbrgFichCenso) ;

Assign (fbrgFichMayores, sNomFichMayores) ; Reset (fbrgFichMayores) ;

fnrPorcentaje := (Filesize (fbrgFichMayores) /                     Filesize (fbrgFichCenso) ) * 100 ;

Close (fbrgFichCenso) ; Close (fbrgFichMayores) END ;

VAR { Variables del programa principal -} sNomFichCenso, sNomFichMayores : tsCadenas; iAnyoActual                   : Integer ;

BEGIN {--- programa principal -} Writeln ; Write ('Nombre del fichero del censo: ') ; Readln (sNomFichCenso) ;

IF NOT FileExists (sNomFichCenso) THEN WriteLN ('ERROR: No existe el archivo de censo "',             sNomFichCenso, '"') ELSE BEGIN Write ('Nombre del fichero de mayores de 60 años') ; Readln (sNomFichMayores) ;

Write ('Año actual : ') ; Readln (iAnyoActual) ;

CrearFicheroMayores (sNomFichCenso, sNomFichMayores,                         iAnyoActual) ;

Writeln ('Mayores de ', iLIMITE, ' años: ',              fnrPorcentaje (sNomFichMayores, sNomFichCenso):0:2, '%') ; END ;

WriteLn ; WriteLn ('====================================================') ; WriteLn ('           Pulsa RETURN para terminar') ; Write  ('___________________________________________________') ; ReadLn ; END. { FIN del PROGRAMA } code