{$mode objfpc}{$H-}{$R+}{$T+}{$Q+}{$V+}{$D+}{$X-}{$warnings on}
program normaliza_01;
	// Manejamos una lista de registros, que contiene una fecha 
	// de vuelo y una duración de vuelo. Calculamos el tiempo
	// normalizado, que será tiempo[i] / media(tiempos), y lo
	// añadimos a otro campo del registro

const
	NumVuelos = 4;
type
	TipoVuelo = record
		fecha: string;
		tiempo: real;
		tiempo_normalizado: real;
	end;
	TipoTiempos = array[1..NumVuelos] of TipoVuelo;

procedure inicia_tiempos(var tiempos: TipoTiempos);
begin
	tiempos[1].fecha := '2018.11.18';
	tiempos[1].tiempo := 92.4;
	tiempos[2].fecha := '2018.11.19';
	tiempos[2].tiempo := 96.6;
	tiempos[3].fecha := '2018.11.20';
	tiempos[3].tiempo := 88.7;
	tiempos[4].fecha := '2018.11.21';
	tiempos[4].tiempo := 91.1;
end;

function media(tiempos: TipoTiempos):real;
var
	suma: real;
	i: integer;
begin
	suma := 0;
	for i := 1 to NumVuelos do
		suma := suma + tiempos[i].tiempo;
	result := suma / NumVuelos;
end;

procedure normaliza(var tiempos: TipoTiempos);
var
	med : real;
	i : integer;
begin
	med :=  media(tiempos);
	for i := 1 to NumVuelos do begin
		tiempos[i].tiempo_normalizado := tiempos[i].tiempo / med;
	end
end;

procedure escribe_tiempos(tiempos: TipoTiempos);
var
	i: integer;
begin
	writeln('Fecha		Tiempo	Tiempo Normalizado');
	for i := 1 to NumVuelos do begin
		write(tiempos[i].fecha, '	');
		write(tiempos[i].tiempo:0:1, '	');
		writeln(tiempos[i].tiempo_normalizado:0:3);
	end;
	writeln;
	writeln('Tiempo medio: ', media(tiempos):0:3);
end;

var 
	tiempos: TipoTiempos;

begin
	inicia_tiempos(tiempos);
	normaliza(tiempos);
	escribe_tiempos(tiempos);
end.

