Leer+lista+de+palabras+y+realizar+búsquedas

=__**Leer una lista de palabras y realizar búsquedas**__=

> Leer diez palabras y seguidamente leer palabras y buscarlas en la lista.

> Finaliza el programa cuando se introduce una palabra vacía

code format="pascal" PROGRAM Pag_7_Pagina_80 ; CONST iNUMERO_PALABRAS = 10 ; iLONG_FISICA    = 80 ; TYPE tsCadenas = String [iLONG_FISICA] ; tasListas = ARRAY [1 .. iNUMERO_PALABRAS] OF tsCadenas ;

PROCEDURE LlenarTabla (VAR asListaPalabras : tasListas) ; VAR i : Integer ; BEGIN FOR i := 1 TO iNUMERO_PALABRAS DO       BEGIN Write (i : 2, ' : ') ; Readln (asListaPalabras [i]) END ;

END ; { LlenarTabla }

FUNCTION fniBuscarPosicion (            sPalabra : tsCadenas;                      CONST asListaPalabras : tasListas) : Integer ; VAR i : Integer ; boEncontrada : Boolean ; BEGIN boEncontrada := FALSE ;

i := 1 ; WHILE NOT boEncontrada AND (i <= iNUMERO_PALABRAS) DO         IF sPalabra = asListaPalabras [i] THEN boEncontrada := TRUE ELSE i := i + 1 ;

IF boEncontrada THEN fniBuscarPosicion := i   ELSE fniBuscarPosicion := 0 ; END ;

{ --Declaración de variables del Programa Principal ---} VAR asListaPalabras : tasListas ; iPosicion      : Integer ; sPalabra       : tsCadenas ;

BEGIN {  PROGRAMA PRINCIPAL ---} Writeln ; Writeln ('Escribe ', iNUMERO_PALABRAS, ' palabras') ; LlenarTabla (asListaPalabras) ;

Write ('Escribe palabra (sólo ENTER para terminar): '); Readln (sPalabra) ;

WHILE Length (sPalabra) > 0 DO   BEGIN iPosicion := fniBuscarPosicion (sPalabra,                                    asListaPalabras) ;

IF iPosicion = 0 THEN Writeln ('  ERROR: palabra no está en la tabla') ELSE Writeln ('CORRECTA: palabra ocupa la posición ',                iPosicion) ;

Writeln ; Write ('Escribe palabra (sólo ENTER para terminar): '); Readln (sPalabra) ; END ; END. { FIN de ARR_1_7.PAS } code