Estoy desesperado...

Se expone todo lo relacionado con el lenguaje, desde lo más básico hasta lo no tanto.

Moderadores: gneuromante, Andres_age, Yzumi

Estoy desesperado...

Notapor Principiante_ada » Mar Dic 29, 2009 13:39

Hola, buenos dias, como veis soy nuevo por aquí. Mi problema es el siguiente: En la universidad nos han mandado algunos trabajillos en ada sobre llamadas a ficheros y demás. El problema es que no nos han explicado nada y nos han mandado un trabajo que yo por lo menos no tngo x dnde cogerlo. alguien me prodría ayudar? aki esta la plantilla y algunas cosas que he hecho yo. El problema lo tengo en la obtencion de datos ya que esta fuertemente tipada. Muchas gracias por adelantado.
Código: Seleccionar todo
--------------------------------------------------------------------
-- CLÁUSULAS DE CONTEXTO
--------------------------------------------------------------------

WITH Ada.Text_IO; USE Ada.Text_IO;
WITH Ada.Integer_Text_IO; USE Ada.Integer_Text_IO;

--------------------------------------------------------------------
-- CABECERA DEL PROGRAMA
--------------------------------------------------------------------

PROCEDURE UE11_A2_ENUN_MontarVuelos IS
--------------------------------------------------------------------
-- ARCHIVO: UE11_A2_ENUN_MontarVuelos.ADB
-- EFECTO: Construcción gestor de vuelos de un archivo de datos
-- AUTOR:
-- GRUPO:
-- FECHA_CREACIÓN:
-- FECHA_ÚLTIMA_MODIFICACIÓN:
--------------------------------------------------------------------
--------------------------------------------------------------------
-- DECLARACIONES DE CONSTANTES UNIVERSALES, TIPOS Y PAQUETES
--------------------------------------------------------------------

--  HORA  --------------------------------------

SUBTYPE Tipo_Hora IS Natural RANGE 0..23;
SUBTYPE Tipo_Minuto IS Natural RANGE 0..59;
TYPE Tipo_Momento IS
RECORD
  hora   : Tipo_Hora;
  minuto : Tipo_Minuto;
END RECORD;

--  FECHA  -------------------------------------

SUBTYPE Tipo_Dia IS Natural RANGE 1..31;
SUBTYPE Tipo_Mes IS Natural RANGE 1..12;
SUBTYPE Tipo_Año IS Positive;
TYPE Tipo_Fecha IS
RECORD
  dia : Tipo_Dia;
  mes : Tipo_Mes;
  año : Tipo_Año;
END RECORD;

--  LOCALIZACION  ------------------------------

SUBTYPE Tipo_Ciudad IS String (1..2);
TYPE Tipo_Localizacion IS
RECORD
  ciudad  : Tipo_Ciudad;
  fecha   : Tipo_Fecha;
  momento : Tipo_Momento;
END RECORD;

--  PASAJE  ------------------------------------

  max_Pasaje : CONSTANT Natural := 10;
SUBTYPE Tipo_Indice_Pasaje IS Positive RANGE 1..max_Pasaje;
TYPE Tipo_Col_Fija_Pasaje IS
  ARRAY (Tipo_Indice_Pasaje) OF Natural;
TYPE Tipo_Col_Var_Pasaje IS
RECORD
  longitud  : Natural;
  elementos : Tipo_Col_Fija_Pasaje;
END RECORD;
SUBTYPE Tipo_Pasaje IS Tipo_Col_Var_Pasaje;

--  VUELO  -------------------------------------

SUBTYPE Tipo_Numero_Vuelo IS String (1..7);
TYPE Tipo_Vuelo IS
RECORD
  numero          : Tipo_Numero_Vuelo;
  capacidad       : Natural;
  origen, destino : Tipo_Localizacion;
  pasaje          : Tipo_Pasaje;
END RECORD;

--  VUELOS  ------------------------------------

  max_Vuelos : CONSTANT Natural := 30;
SUBTYPE Tipo_Indice_Vuelos IS Positive RANGE 1..max_Vuelos;
TYPE Tipo_Col_Fija_Vuelos IS
  ARRAY (Tipo_Indice_Vuelos) OF Tipo_Vuelo;
TYPE Tipo_Col_Var_Vuelos IS
RECORD
  longitud  : Natural;
  elementos : Tipo_Col_Fija_Vuelos;
END RECORD;
SUBTYPE Tipo_Vuelos IS Tipo_Col_Var_Vuelos;


PROCEDURE Escribir_Momento (f : IN File_Type;
                            m : IN Tipo_Momento) IS
BEGIN
  Put (f,m.hora,2);
  Put (f,':');
  Put (f,m.minuto,0);
END Escribir_Momento;

PROCEDURE Leer_Momento (f : IN File_Type;
      M : out Tipo_Momento) is
   Hora: Tipo_Hora;
   minuto: tipo_Minuto;
begin
null;
END Leer_Momento;

PROCEDURE Escribir_Fecha (f     : IN File_Type;
                          fecha : IN Tipo_Fecha) IS
BEGIN
  Put (f,fecha.dia,0);
  Put (f,'/');
  Put (f,fecha.mes,0);
  Put (f,'/');
  Put (f,fecha.año,0);
END Escribir_Fecha;

PROCEDURE Leer_Fecha (f     : IN File_Type;
                      fecha : OUT Tipo_Fecha) IS
BEGIN
  NULL;
END Leer_Fecha;

PROCEDURE Escribir_Localizacion (f     : IN File_Type;
                                 sitio : IN Tipo_Localizacion) IS
BEGIN
  Put (f,"(");
  Put (f,sitio.ciudad);
  Put (f,',');
  Escribir_Fecha (f,sitio.fecha);
  Put (f,',');
  Escribir_Momento (f,sitio.momento);
  Put (f,")");
END Escribir_Localizacion;

PROCEDURE Saltar_Blancos (f : IN File_Type) IS
-- PRE: La general
--POST: Avanza por "f" hasta el primer caracter distinto de ' '
--      (sin leerlo) <==> salta blancos y fines de linea.
  c : Character;
  fin_Linea, encontrado : Boolean := False;
begin
   while encontrado loop
         Look_Ahead(F, C, Fin_Linea);
      if Fin_Linea then
         Skip_Line;
         else
         Get(C);
         if C/=' ' then Encontrado:=True;
         end if;
         end if;
      Put(C);
   end loop;         
END Saltar_Blancos;

PROCEDURE Leer_Localizacion (f     : IN File_Type;
                             lugar : OUT Tipo_Localizacion) IS
BEGIN
  NULL;
END Leer_Localizacion;

PROCEDURE Escribir_Pasaje (f      : IN File_Type;
                           pasaje : IN Tipo_Pasaje) IS
BEGIN
  Put (f,'(');
  FOR i IN 1..pasaje.longitud LOOP
    Put (f,pasaje.elementos(i),0);
    IF i /= pasaje.longitud THEN Put (f,','); END IF;
  END LOOP;
  Put (f,')');
END Escribir_Pasaje;

PROCEDURE Leer_Pasaje (f      : IN File_Type;
                       pasaje : OUT Tipo_Pasaje) IS
  viajero : Natural;
BEGIN
  NULL;
END Leer_Pasaje;

PROCEDURE Escribir_Vuelo (f     : IN File_Type;
                          vuelo : IN Tipo_Vuelo) IS
BEGIN
  Put (f,vuelo.numero);
  Put (f,' ');
  Put (f,vuelo.capacidad,2);
  Put (f,' ');
  Escribir_Localizacion (f,vuelo.origen);
  Put (f,' ');
  Escribir_Localizacion (f,vuelo.destino);
  Put (f,' ');
  Escribir_Pasaje (f,vuelo.pasaje);
END Escribir_Vuelo;

PROCEDURE Leer_Vuelo (f     : IN File_Type;
                      vuelo : OUT Tipo_Vuelo) IS
BEGIN
  NULL;
END Leer_Vuelo;

PROCEDURE Escribir_Vuelos (f : IN File_Type;
                           c : IN Tipo_Vuelos) IS
BEGIN
  FOR i IN 1..c.longitud LOOP
    Escribir_Vuelo (f,c.elementos (i));
    New_Line (f);
  END LOOP; 
END Escribir_Vuelos;

PROCEDURE Leer_Vuelos (f : IN File_Type;
                       c : OUT Tipo_Vuelos) IS
  vuelo : Tipo_Vuelo;
  i     : Natural := 0;
BEGIN
  NULL;
END Leer_Vuelos;

--------------------------------------------------------------------
-- DECLARACIONES DE FUNCIONES
--------------------------------------------------------------------

--------------------------------------------------------------------
-- DECLARACIONES DE CONSTANTES DE PRUEBAS
--------------------------------------------------------------------

--------------------------------------------------------------------
-- DECLARACIONES DE PRUEBAS
--------------------------------------------------------------------

--------------------------------------------------------------------
-- DECLARACIONES DE VARIABLES
--------------------------------------------------------------------

  entrada, salida : File_Type;
Los_Vuelos      : Tipo_Vuelos;
momento: tipo_momento;

--------------------------------------------------------------------
-- BLOQUE DE EJECUCIÓN DE PRUEBAS
--------------------------------------------------------------------

begin
  Open (entrada,In_File,"MontarVuelos_Datos.TXT");
  Leer_Vuelos (entrada,los_Vuelos);
  Close (entrada);
  Create (salida,Out_File,"MontarVuelos_Resultados.TXT");
  Escribir_Vuelos (salida,los_Vuelos);
  Close (salida);
END UE11_A2_ENUN_MontarVuelos;


Adjunto ela hoja de entrada(un .txt)
Principiante_ada
Novato
Novato
 
Mensajes: 2
Registrado: Mar Dic 29, 2009 13:22

Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron