Pascal/Turbo Pascal - Como detectar un *?

 
Vista:

Como detectar un *?

Publicado por LuisITIG (12 intervenciones) el 04/03/2007 13:01:14
Hola, tengo un problema, me han pedido diseñar un programa en el que introduciendo una cadena, busque en un archivo concreto si esta palabra esta escondida entre los caracteres del texto. Lo tengo hecho pero ahora me piden que la palabra sea hasta que se introduzca un asterisco, es decir si por ejemplo introduces 'osi*to' la palabra a buscar será osi.
Os paso el codigo que tengo hecho para el primer problema en el que si por ejemplo metes 'osi*to' busca osi*to.
habia intentado solucionarlo incluyendo un
while not (palabra[i]='*') do
cadena_a_buscar=:cadena_a_buscar+palabra[i];

pero el programa me entra en un bucle infinito.
Un saludo y gracias

-----------------------------------
program ejercicio5primeraparte;

{$APPTYPE CONSOLE}

uses
SysUtils;

VAR
palabra,palabra_texto:String;
dir:String;
arch:TEXT;
long,caracteres_acumulados,i,j:integer;
c:char;
d:String[1];

begin
caracteres_acumulados:=0;
i:=0;
j:=1;
palabra_texto:='';
write('Escribir una palabra: ');
readln(palabra);
palabra:=uppercase (palabra);
long:=ORD(palabra[0]);
dir:='texto.dat';
assign(arch,dir);
reset(arch);

while not eof(arch) do
begin
i := i + 1;
read(arch, c);
d:=uppercase(c);

if (palabra[j] = d[1]) and (j<=long) then
begin
j:=j+1;
palabra_texto := palabra_texto + c;

if (palabra = uppercase(palabra_texto)) then
caracteres_acumulados := i;
end;
end;
if (palabra = uppercase(palabra_texto)) then
begin
palabra:=lowercase(palabra);
writeln('Palabra <', palabra, '> encontrada entre los <', caracteres_acumulados,'> primeros caracteres del texto');
end
else
begin
palabra:=lowercase(palabra);
writeln('Palabra <', palabra, '> no encontrada en el texto');
end;
close(arch);
readln;
end.
-----------------------------
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como detectar un *?

Publicado por Carlos Guimaraenz (265 intervenciones) el 04/03/2007 21:21:11
Hola Luis! Puedes crear una función o procedure que haga lo siguiente:

function Palabra(fuente : string) : string;
var
aux : string;
i : byte;
begin
aux:='';
i:=1;
while (i <= length(fuente)) and (fuente[i] <> '*') do
begin
aux:=aux + fuente[i];
i:=i + 1;
end;
Palabra := aux; {retorno la palabra hasta el asterisco si es que existe}
end;

Un abrazo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar