• Viernes 29 de Marzo de 2024, 16:04

Autor Tema:  contar pepes (o cualquier otra palabra)  (Leído 1805 veces)

twipsy

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
contar pepes (o cualquier otra palabra)
« en: Sábado 20 de Noviembre de 2010, 11:34 »
0
tengo que hacer un programa que me cuente cuantas veces se repite la palabra "pepe" en una frase. el problema esta en que no consigo que me cuente un solo pepe. os mando el codigo a ver como se puede solucionar

Código: Pascal
  1. Program Pepe;
  2. uses crt;
  3. var
  4.     frase : string;
  5.     cont, i : integer;
  6. begin
  7.     clrscr;
  8.     writeln('Ingresa frase');
  9.     readln(frase);
  10.     cont := 1;
  11.     for i:=1 to length(frase) do
  12.         if frase[i] = 'pepe' then
  13.             cont := cont + 1;
  14.     writeln('La frase contiene ',cont,' pepe/s...');
  15.     readkey;
  16. end.
  17.  

Homer

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: contar pepes (o cualquier otra palabra)
« Respuesta #1 en: Sábado 20 de Noviembre de 2010, 12:39 »
0
Buenas,

tengo mi Pascal algo oxidado, pero intentaré aportar algo.

Te explicaré el fallo que veo con un ejemplo:
Frase de ejemplo: "Mi amigo pepe es genial."

Con el bucle for empiezas en la letra M y le estás diciendo que:

frase (=frase[1]='M') = 'pepe' aumente cont en 1... es decir, estás comparando un único caractater 'M', 'i', ' ', 'a', 'm'... con una cadena entera 'pepe', con lo cual, te dará error o no te dará el resultado ideal.

Una posible solución algo "chabacana", es decir, que se podría refinar bastante más, podría ser:

Código: Pascal
  1. for i:= 1 to length (frase) do
  2.       if (frase[i]= 'p') and (frase[i+1]= 'e') and (frase[i+2]= 'p') and (frase[i+3]= 'e') then
  3.              cont:= cont + 1
  4.  

De esta forma, lo compruebas carácter a carácter, pero las cuatro letras a la vez.

Como ya te he dicho, es una posible solución ya que si por ejemplo te mandaran buscar siete u ocho palabras en un texto, lo tendrías que refinar bastante más (o dejarte los dedos y los ojos poniendo 'and').

Ah, y contador lo debes de inicializar a 0 (cont:= 0) ya que en tu código, si te ponen la frase "Hola", te diría que hay un "pepe".

Espero haberte ayudado.

Un saludo.

twipsy

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: contar pepes (o cualquier otra palabra)
« Respuesta #2 en: Sábado 20 de Noviembre de 2010, 13:09 »
0
muchas gracias