Pascal/Turbo Pascal - Ayuda a novato en un programa

   
Vista:

Ayuda a novato en un programa

Publicado por Eliecer (3 intervenciones) el 24/03/2014 06:15:23
Buen día. Estoy creando un pequeño programa que sirva para buscar y reemplazar una palabra (o parte de esta) por otra. El caso es que algo sale mal al querer usar la función "insert" para reemplazar la palabra, ya que me sale muchas veces la palabra reemplazada a la izquierda del texto ingresado. Agradecería mucho su ayuda... Dejo el código del programa para explicarme mejor:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program ins;
uses crt;
var
texto,pal1,pal2:string;
posi,x:integer;
 
begin
clrscr;
readln(texto); {Texto a ingresar. Ejemplo: Hernando Hernandez}
readln(pal1); {palabra a reemplazar. Ejemplo: 'Her'}
readln(pal2);  {palabra a insertar. Ejemplo: 'Fer'}
for x:= 1 to length(texto) do
begin
posi:=pos(pal1,texto);
delete(texto,posi,length(pal1));
insert(pal2,texto,posi);
end;
writeln(texto);
readkey;
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

Ayuda a novato en un programa

Publicado por David (144 intervenciones) el 24/03/2014 12:27:01
El problema estaba en el bucle for que en realidad no es necesario. Te propongo esta solución.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses crt;
var
texto,pal1,pal2:string;
posi,x:integer;
 
begin
clrscr;
readln(texto); {Texto a ingresar. Ejemplo: Hernando Hernandez}
writeln('Introduzca la palabra a buscar: ');
readln(pal1); {palabra a reemplazar. Ejemplo: 'Her'}
Writeln('Introduzca la palabar de reemplazo: ');
readln(pal2);  {palabra a insertar. Ejemplo: 'Fer'}
posi:=pos(pal1,texto);
delete(texto,posi,length(pal1));
insert(pal2,texto,posi);
writeln(texto);
readkey;
end.
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

Ayuda a novato en un programa

Publicado por Eliecer (3 intervenciones) el 24/03/2014 15:11:30
Hola, gracias por responder! Bueno, el problema es que necesito que no solamente reemplace la primer palabra que encuentre, sino la cantidad de veces que esa palabra se encuentre en el texto.
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

Ayuda a novato en un programa

Publicado por David (144 intervenciones) el 24/03/2014 16:37:14
Hice unas modificaciones. Probado en TP 7. Funciona correctamente. Espero que te sirva.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses crt;
var
texto,pal1,pal2:string;
posi,x:integer;
 
begin
clrscr;
readln(texto); {Texto a ingresar. Ejemplo: Hernando Hernandez}
writeln('Introduzca la palabra a buscar: ');
readln(pal1); {palabra a reemplazar. Ejemplo: 'Her'}
Writeln('Introduzca la palabar de reemplazo: ');
readln(pal2);  {palabra a insertar. Ejemplo: 'Fer'}
REPEAT
posi:=pos(pal1,texto);
delete(texto,posi,length(pal1));
IF POSI<>0 THEN
insert(pal2,texto,posi);
uNTIL POSI = 0;
writeln(texto);
readkey;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda a novato en un programa

Publicado por Eliecer (3 intervenciones) el 24/03/2014 16:49:09
¡Muchas gracias! Funciona perfectamente. Estuve haciéndolo con un repeat y obtuve mejores resultados, pero seguía insertándose una vez más que las deseadas la palabra. No pensé que con un if se arreglaría, jeje. Nuevamente gracias por tomarte la molestia de responder!
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