набросаю-ка тебе псевдоалгоритм
строка
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
string str="bla fig tebe loh";
struct data{
string vec;
int counter=0;
};
vector<data> v;
data tmp;
string substr="";
for(int i=0;i<str.length();i++)
{
if(str[i] != 32)
substr+=str[i];
else
{
tmp.counter=0;
tmp.vec = substr;
v.push_back(tmp);
substr="";
}
}
tmp.counter=0;
tmp.vec = substr;
v.push_back(tmp);
for(int i=0;i<v.size();i++)
{
//cout<<v[i].vec<<" ";
for(int j=0;j<v.size();j++)
if(v[i].vec.length() == v[j].vec.length()/* && i!=j*/)
{
v[i].counter++;
v[j].counter++;
cout<<v[i].vec<<" "<<v[j].vec<<'\n';
}
}
for(int i=0;i<v.size();i++)
{
v[i].counter/=3;
std::cout<<'\n'<<v[i].vec<<" "<< v[i].counter;
}
}
на самом деле тебе надо на пушбекать образцы слов от 1 символа и до максимального в языке который в тексте и потом сравнивать с пушбеканными словами из строки с установленными разделителями (32 символ пробела), смотри таблицу аски