Hola Principe_Azul:
Supongo que el código que has puesto cuenta los espacios, luego para obtener las palabras hay que añadir una unidad al resultado final. Por otro lado, la frase ha de acabar en punto, pero no las palabras que componen la frase.
Hace algunos meses
vosk(creo) realizó un método muy completo en el que se consideraban casos como palabras que se separan por un punto( "El perro.El gato"), palabras separadas por más de un espacio y cosas así, que se pueden dar en la práctica.
Lo más sencillo desde luego es considerar que la separación entre palabras siempre implica un sólo espacio.
Mi aportación:
Código C++:
Ver original#include <iostream>
#include <string.h>
using namespace std;
int main () {
string Frase = "Hola bienvenido al futuro de la programacion.";
int i=0, contador=0;
while (i<Frase.length())//si la condición es que la frase acaba en ".", tambien se puede hacer while (Frase[i]!='.')
{
if (Frase[i]==' ')
{
contador++;
}
i++;
}
cout<<"La frase tiene: "<<contador+1<<" palabras."<<endl;
}