Ver Mensaje Individual
  #14 (permalink)  
Antiguo 21/05/2014, 04:00
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Contar Palabras de una frase? string

Bueno, ya no le doy más vueltas al asunto.
De esta forma parece que interpreta de forma correcta todas las formas de encontrarse un '.'.
Código C++:
Ver original
  1. palabra.palabra
  2. palabra. palabra
  3. palabra .palabra
  4. palabra . palabra

Lo he hecho con recursividad. La idea es que si el token contiene un caracter punto, se sustituye por un espacio y se llama a la función de forma recursiva.
Algo así:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <sstream>
  3. #include <string.h>
  4.  
  5. using namespace std;
  6.  
  7. int cuenta( string s )
  8. {
  9.     istringstream is(s);
  10.     string token;
  11.     int total = 0;
  12.     while(is >> token)
  13.         {
  14.             size_t pos= token.find('.');
  15.             if (pos!=string::npos)
  16.             {
  17.                 token.replace (pos,1,1,' ');
  18.                 total+= cuenta(token);
  19.             }
  20.             else
  21.             {
  22.                 ++total;
  23.             }
  24.         }
  25.     return total;
  26. }
  27.  
  28. int main()
  29. {
  30.     string frase="Contar palabras.Se me da bien";
  31.     cout<<"La frase '"<<frase<<"' tiene "<<cuenta(frase)<<" palabras."<<endl;
  32.     return 0;
  33.  
  34. }