with ada.text_io, ada.numerics.discrete_random, ada.strings.unbounded, ustrings; use ada.text_io, ada.strings.unbounded, ustrings; package body dicc is -- esto lo aņadi para generar ficheros no ordenados alfabeticamente package rango_random is new ada.numerics.discrete_random(rango); use rango_random; procedure baraja(dout:out diccionario; din:in out diccionario) is -- baraja el diccionario aleatoriamente; gen:generator; i,n:rango; begin reset(gen); vacio(dout); n:=din.numpal; for j in 1..n loop i:=random(gen); i:=(i mod din.numpal) +1; inserta(dout,din.clave(i),din.info(i)); din.clave(i):=din.clave(din.numpal); din.info(i):=din.info(din.numpal); din.numpal:=din.numpal-1; end loop; end baraja; procedure graba(d:in diccionario) is -- guarda el dicc en un fichero fichPal,fichDef:file_type; -- ficheros de texto palabra,definicion:ustring; begin create(fichpal,out_file,"pr.txt"); create(fichdef,out_file,"dr.txt"); put_line("guardando el fichero..."); for i in 1..d.numpal loop put_line(fichpal,d.clave(i)); put_line(fichdef,d.info(i)); end loop; close(fichpal); close(fichdef); end graba; -- aqui es donde empieza de verdad procedure vacio(d:out diccionario) is begin d.numpal:=0; end vacio; procedure busca(d:in diccionario; palabra:in ustring; definicion:out ustring) is i:integer; begin definicion:=Null_Unbounded_String; i:=1; while (i<=d.numpal) and then (d.clave(i)/=palabra) loop i:=i+1; end loop; if (i<=d.numpal) and then (d.clave(i)=palabra) then definicion:=d.info(i); end if; end busca; procedure inserta(d:in out diccionario; palabra,definicion:in ustring) is i:integer; begin i:=1; while (i<=d.numpal) and then (d.clave(i)/=palabra) loop i:=i+1; end loop; if (i<=d.numpal) and then (d.clave(i)=palabra) then d.info(i):=definicion; else if d.numpal