Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Goddamn en 18 Marzo 2018, 18:51 pm



Título: Contador de palabras
Publicado por: Goddamn en 18 Marzo 2018, 18:51 pm
Hola, como puedo hacer para que este programa me cuente cuanta cantidad de pacman se encuentra en una cadena.

Por ejemplo: solo que compruebe los pacmans (Hola :v Hola :v Adiós :v Adiós :v:v:v:v) = 7 pacmans.

No entiendo mucho de esto espero que me ayuden gracias.

Código
  1. #include <conio.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. #include <string>
  6. #include <algorithm>
  7. #include <iostream>
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. int iCont = 0, i = 0;
  14. char cPacman[] = "Hola :v Hola :v Adios :v Adios :v:v:v:v";
  15. char cPalabra[] = ":v";
  16.  
  17. string sString = string(cPacman);
  18.  
  19. int iLen = strlen(sString.c_str());
  20.  
  21. if (sString.find(cPalabra) == -1)
  22. printf("No se encuentra ningun pacman");
  23. else
  24. {
  25. while (i < iLen)
  26. {
  27. while (i < iLen && cPacman[i] == ' ')
  28. {
  29. i = i + 1;
  30. }
  31.  
  32. if (i < iLen)
  33. {
  34. iCont = iCont + 1;
  35. }
  36.  
  37. while (i < iLen && cPacman[i] != ' ')
  38. {
  39. i = i + 1;
  40. }
  41. }
  42.  
  43. printf("El pacman si se encuentra y se repite %d", iCont);
  44.  
  45. }
  46.  
  47. getch();
  48. return 0;
  49. }
  50.  


Título: Re: Contador de palabras
Publicado por: MAFUS en 18 Marzo 2018, 19:23 pm
Ya tienes una función de librería que hace eso: strstr.

Algo así:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main() {
  5.    int iCont = 0;
  6.    char cPacman[] = "Hola :v Hola :v Adios :v Adios :v:v:v:v";
  7.    char cPalabra[] = ":v";
  8.    char *aux = cPacman;
  9.  
  10.    while(aux = strstr(aux, cPalabra)) {
  11.        ++iCont;
  12.        aux += strlen(cPalabra); // Para que no me cuente siempre el mismo
  13.                                 // texto muevo aux al final de la palabra encontrada.
  14.    }
  15.  
  16.    printf("El pacman se repite %d", iCont);
  17. }