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.
-----------------------------
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


0