RE:¿Alguien me ayuda a programar?
Buenas a todos!
Y tengo casi todo el programa solucionado, gracias a todos y en especial a E.T. Ahora lo unico que me falta es hacer la cuarta y ultima opción. Espero que me podáis ayudar. En la última opción debo hacer lo siguiente:
"Dadas dos fechas, dar el porcentaje de vuelos puntuales sobre el total de vuelos entre estas fechas."
Donde encuentro la dificultad, es en como hacer para que utilice la informacion de puntualidad de la opción 3 entre dos fechas. ¿Como podría hacerlo?
Adjunto el codigo. Funciona correctamente.
Código Delphi [-]
uses
SysUtils;
type
t_fecha= record
minuto:0..59;
hora:0..23;
dia:1..31;
mes:1..12;
anyo: 2000..2100;
end;
t_vuelo= record
cod_vuelo: string[6];
aero_salida: string[3];
aero_llegada: string[3];
pasajeros: integer;
fecha_salida,fecha_llegada: t_fecha;
fecha_salida_real,fecha_llegada_real:t_fecha;
end;
var
v1:array[1..100]of t_vuelo;
j_v:integer;
op:integer;
procedure Leer_datos (j:integer );
begin
write ('Escriba el codigo de vuelo(AAA111): ');
readln(v1[j].cod_vuelo);
write ('Cual es el codigo del aeropuerto de salida?(AAA): ');
readln(v1[j].aero_salida);
write ('Cual es el codigo del aeropuerto de llegada?(AAA): ');
readln(v1[j].aero_llegada);
write ('Cuantos pasajeros hay en este vuelo?: ');
readln(v1[j].pasajeros);
write ('Escriba la fecha y hora programada de salida del vuelo: ');
Writeln ('Dia: ');
readln(v1[j].fecha_salida.dia);
Write ('Mes: ');
readln(v1[j].fecha_salida.mes);
Write ('Anyo: ');
readln(v1[j].fecha_salida.anyo);
Write ('Hora: ');
readln(v1[j].fecha_salida.hora);
Write ('Minuto: ');
readln(v1[j].fecha_salida.minuto);
writeln ('Escriba la fecha y hora programada de llegada del vuelo: ');
Write ('Dia: ');
readln(v1[j].fecha_llegada.dia);
Write ('Mes: ');
readln(v1[j].fecha_llegada.mes);
Write ('Anyo: ');
readln(v1[j].fecha_llegada.anyo);
Write ('Hora: ');
readln(v1[j].fecha_llegada.hora);
Write ('Minuto: ');
readln(v1[j].fecha_llegada.minuto);
end;
procedure Hora_real (j:integer );
begin
writeln ('Escriba la hora real de salida del vuelo: ');
Write ('Hora: ');
readln(v1[j].fecha_salida_real.hora);
Write ('Minuto: ');
readln(v1[j].fecha_salida_real.minuto);
writeln ('Escriba la hora real de llegada del vuelo: ');
Write ('Hora: ');
readln(v1[j].fecha_llegada_real.hora);
Write ('Minuto: ');
readln(v1[j].fecha_llegada_real.minuto);
end;
procedure Modificar_datos ();
var j,s:integer;
begin
j:=0;
if j_v <> 0 then begin
repeat
inc(j);
if j>j_v then
j:=1;
writeln(' - Ref. de vuelo: ',v1[j].cod_vuelo);
writeln(' - Trayecto: ', v1[j].aero_salida,'-',v1[j].aero_llegada);
writeln(' - Fecha: Sal-',v1[j].fecha_salida.dia,'/',v1[j].fecha_salida.mes,'/',v1[j].fecha_salida.anyo);
writeln(' - Hora: Sal ',v1[j].fecha_salida.hora,':',v1[j].fecha_salida.minuto);
writeln(' - Fecha: Lleg-',v1[j].fecha_llegada.dia,'/',v1[j].fecha_llegada.mes,'/',v1[j].fecha_llegada.anyo);
writeln(' - Hora: Lleg- ',v1[j].fecha_llegada.hora,':',v1[j].fecha_llegada.minuto);
writeln('--------------------------------------');
writeln('');
writeln('1) Seleccionar vuelo de la posicion actual ');
writeln('2) Mostrar el vuelo siguiente');
writeln('3) Volver al menu principal');
writeln('');
readln(s);
until (s=1) or (s=3);
if s<>3 then
begin
writeln('Introduzca ahora los nuevos datos');
Leer_datos(j);
end;
end
else
begin
Writeln('No hay vuelos guardados que modificar');
end;
end;
procedure Puntualidad();
var j,z,p,q,r,t:integer;
begin
j:=0;
if j_v <> 0 then begin
repeat
inc(j);
if j>j_v then
j:=1;
writeln(' - Ref. de vuelo: ',v1[j].cod_vuelo);
writeln(' - Hora: Sal ',v1[j].fecha_salida.hora,':',v1[j].fecha_salida.minuto);
writeln(' - Hora: Lleg- ',v1[j].fecha_llegada.hora,':',v1[j].fecha_llegada.minuto);
writeln('--------------------------------------');
writeln('');
writeln('1) Seleccionar vuelo de la posicion actual ');
writeln('2) Mostrar el vuelo siguiente');
writeln('3) Volver al menu principal');
writeln('');
readln(z);
until (z=1) or (z=3);
if z<>3 then
begin
writeln('Introduzca la hora de real de salida y de llegada del vuelo');
Hora_real (j);
end;
p:=(v1[j].fecha_salida.hora)-(v1[j].fecha_salida_real.hora);
q:=(v1[j].fecha_salida.minuto)-(v1[j].fecha_salida_real.minuto);
r:=(v1[j].fecha_llegada.hora)-(v1[j].fecha_llegada_real.hora);
t:=(v1[j].fecha_llegada.minuto)-(v1[j].fecha_llegada_real.minuto);
if ((q>-5) and (q<5))and((p>-1) and (p<1)) then
writeln ('El vuelo ha salido a la hora prevista')
else
writeln ('El vuelo ha salido con retraso');
if ((r>-5) and (r<5))and((t>-1) and (t<1)) then
writeln ('El vuelo ha llegado a la hora prevista')
else
writeln ('El vuelo ha llegado con retraso');
end
else
begin
Writeln('No hay vuelos guardados que modificar');
end;
end;
begin
j_v:=0;
repeat
writeln ('Escoja una de las siguentes opciones: ');
writeln ('--------------------------------------');
writeln ('1) Entrar datos');
writeln ('2) Modificar los datos de vuelo');
writeln ('3) Calcular la puntualidad de los vuelos');
writeln ('4) Porcentajes de puntualidad segun fechas');
writeln ('0) Salir');
writeln;
readln (op);
writeln;
if (op<0) or (op>5) then
writeln('La opcion no es correcta, escoja otra opcion.');
case op of
1:begin
inc(j_v);
Leer_datos(j_v);
end;
2: Modificar_datos();
3: Puntualidad();
end;
until op=0;
end.
Muchas gracias por la ayuda.