-- AUTORA: Elvira Mayordomo Cámara
-- PROYECTO: módulo de declaración del TAD
-- lrestricciones solución
-- del examen de febrero de 2001 de la asignatura de
-- Estructuras de Datos y Algoritmos
-- FICHERO: lrestricciones.ads
-- FECHA: 6-2-01; 12-1-04
-- Especificación no hecha
with Ada.text_io, Ada.Strings.Unbounded,
Ustrings,tablasrecolocacion;
use Ada.text_io, Ada.Strings.Unbounded, Ustrings;
package lrestricciones is
type planEstudios is private;
type prerequisito is private;
-- coste en memoria: n asignaturas ocupan
-- ocupa O(numMax)
function h(palabra:ustring;tam:integer) return integer;
-- función hash por el método de la división con módulo numMax
-- coste en tiempo O(longitud(palabra))=O(1)
procedure vacio(p:out planEstudios);
-- coste en tiempo O(numMax)
procedure anyadir(p:in out planEstudios; x:in prerequisito);
-- coste en tiempo O(1)
procedure leer(p:out planEstudios);
-- pide el nombre de un fichero y copia la información del
-- mismo en el plan de estudios p
function maxSemestres(p:planEstudios) return integer;
-- coste en tiempo O(n^2), donde n es
-- el número de asignaturas
private
numMax: constant:=211; -- primer primo mayor que 200
type nodo;
type ptnodo is access nodo;
type pt4nodo is array(1..4) of ptnodo;
type nodo is
record
ptrequisitos:pt4nodo;
altura:integer; --sólo se calcula en maxSemestres
end record;
nulo: constant pt4nodo:=(null,null,null,null);
package tablas is new
tablasrecolocacion(ustring, ptnodo, nummax,h);
use tablas;
type rnombre;
type lista is access rnombre;
type rnombre is record
elnombre: ustring;
posicion: ptnodo;
sig: lista;
end record;
type planEstudios is
record
asig:tabla;--tabla hash de asignaturas
titulo:ptnodo;--relaciones entre las asignaturas
lalista:lista;--lista de asignaturas
end record;
type lospre is array(0..4) of ustring;
type prerequisito is
record
numasig:integer;
pres:lospre;
end record;
end lrestricciones;
syntax highlighted by Code2HTML, v. 0.9.1