Código:
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main()
{
string frase;
cout << "Insertar frase: ";
getline(cin,frase);
string::iterator i = frase.begin();
int cuenta = 0;
map<int,int> palabras;
map<int,int>::iterator m;
typedef pair <int, int> Int_Pair;
do
{
if(*i != ' ')
{
cuenta++;
}
if(*i == ' ' || i == frase.end()-1)
{
m = palabras.find(cuenta);
if(m == palabras.end())
{
palabras[cuenta] = 1;
}
else
palabras[cuenta]++;
cuenta = 0;
}
i++;
}
while(i != frase.end());
m = palabras.begin();
while(m != palabras.end())
{
cout << "Hay " << m->second << " palabras de " << m->first << " letras. \n";
m++;
}
system("PAUSE");
}
anda...comprobado ;)
yo use un map por comodidad...pero podes usar un vector o una array...la clave es el uso de iterators.
espero que te ayude ;)