Programación General > Pascal
contar pepes (o cualquier otra palabra)
(1/1)
twipsy:
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 ---Program Pepe;uses crt;var frase : string; cont, i : integer;begin clrscr; writeln('Ingresa frase'); readln(frase); cont := 1; for i:=1 to length(frase) do if frase[i] = 'pepe' then cont := cont + 1; writeln('La frase contiene ',cont,' pepe/s...'); readkey;end.
Homer:
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 ---for i:= 1 to length (frase) do if (frase[i]= 'p') and (frase[i+1]= 'e') and (frase[i+2]= 'p') and (frase[i+3]= 'e') then cont:= cont + 1;
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:
muchas gracias
Navegación
Ir a la versión completa