Ver Mensaje Individual
  #4  
Antiguo 04-06-2007
Avatar de Nanaky
Nanaky Nanaky is offline
Miembro
 
Registrado: jun 2007
Posts: 10
Reputación: 0
Nanaky Va por buen camino
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.
Responder Con Cita