program escondida (input, f, output); (* Busca la palabra de entrada escondida en el texto f *) (* Pre: el fichero de entrada f existe y es text *) function esta (p:string; var f : text): boolean; (* Devuelve: está (o no) p escondida en f a partir de la posición en la que entre f *) (* Pre: f abierto *) (* Post: posición de lectura de f sobre el carácter siguiente a la localización de p o sobre EOF *) (* Obs: se busca la palabra en la combinación mayúsculas-minúsculas literal *) var i : integer; c, cf : char; estaLocal: boolean; begin if p='' then estaLocal := TRUE else begin estaLocal := FALSE; i := 1; c := p[i] end; while not eof (f) and not estaLocal do begin (* línea *) while not eoln (f) and not estaLocal do begin (* contenido de línea *) read (f, cf); if cf = c then begin if i = length(p) then estaLocal := true else begin i := i+1; c := p[i] end; end end; readln (f); end; esta := estaLocal end; var f : text; palabra : string; nombre : string; BEGIN write ('Nombre del fichero: '); readln (nombre); (* Pre: el fichero de entrada f existe y es text *) assign (f, nombre); reset (f); write ('Palabra a buscar: '); readln (palabra); if esta (palabra, f) then writeln ('ENCONTRADA') else writeln ('No está'); END.