-- AUTOR: Elvira Mayordomo Cámara
-- PROYECTO: módulo de declaración del
-- TAD rvuelos solución del examen del
-- 24-1-03
-- FICHERO: rvuelos.ads
-- FECHA: 21-1-03; 9-1-04
-- Especificación no hecha
with tablasrecolocacion;
with Ada.text_io, Ada.Strings.Unbounded, ustrings;
use Ada.text_io, Ada.Strings.Unbounded, ustrings;
package rvuelos is
function h(nom:ustring;m:integer) return integer;
-- hash por método de la división con módulo m
-- coste en tiempo O(longitud(nom))
type tpVuelosDiarios is private;
-- coste en memoria:
-- O(núm. pasajeros + (núm. vuelos * núm.
-- categorías))
procedure reservar(vuelo,pasajero,categoria: in ustring;
todo: in out tpVuelosDiarios);
-- Pre: existe el vuelo y la categoría
-- coste en tiempo O(1) en media
procedure cancelar(pasajero: in ustring;
todo: in out tpVuelosDiarios);
-- Pre: el pasajero está en el sistema
-- coste en tiempo O(1) en media
procedure cancelarVuelo(vuelo: in ustring; todo: in out tpVuelosDiarios);
-- Pre: el vuelo existe
-- coste en tiempo:
-- O(núm. vuelos * núm. categorías)
private
max1:constant:= 101; --constante prima mayor que
-- el número de aviones por el número de categorías
max2:constant:= 101; --constante prima mayor que
-- el número máximo de pasajeros
type tpreserva;
type ptreserva is access tpreserva;
type tpreserva is record
elpasajero, elvuelo, lacategoria: ustring;
enListaEspera: boolean;
sig,ant: ptreserva; --en la lista de reserva o espera
end record;
type colaEspecial is record
prim,ult:ptreserva;
end record;
type tpResVueloCat is record
numPlazas, numOcupadas: integer;
listaReservas,listaEspera:colaEspecial;
end record;
type ptResVueloCat is access tpResVueloCat;
package tablasVC is new tablasrecolocacion(ustring, ptResVueloCat,
max1, h);
use tablasVC;
package tablasPas is new tablasrecolocacion(ustring, ptreserva, max2,
h);
use tablasPas;
type rnombre;
type lista is access rnombre;
type rnombre is record
elnombre: ustring;
sig: lista;
end record;
type tpVuelosDiarios is record
losVuelos, lasCategorias: lista;
tablaVueloCategoria: tablasVC.tabla;
tablaPasajero: tablasPas.tabla;
end record;
end rvuelos;
syntax highlighted by Code2HTML, v. 0.9.1