Ho usato le mappe , sono molto utili.
codice:
#pragma warning(disable:4786)
#include <iostream>
#include <map>
#include <string>
int main()
{
typedef std::map<char,int> strint_map;
strint_map lett_freq;
strint_map::iterator lett_freqIt;
int i=0;
//Frase
//std::string str = "Questa qui e' molto grande per vedere come funziona";
std::string str = "ciao a tutti";
//Raccoglie le frequenze
for(i=0;i<str.size();i++)
{
lett_freq[str[i]]++;
//std::cout<<""<<str[i]<<" "<<lett_freq[str[i]]<<std::endl;
}
std::cout<<std::endl;
//Primo tipo di stampa
lett_freqIt = lett_freq.begin();
do{
std::cout<<"["<<(*lett_freqIt).first<<"] = "<<(*lett_freqIt).second<<std::endl;
}while(++lett_freqIt!=lett_freq.end() );
std::cout<<std::endl;
//Secondo tipo di stampa
for(i=0;i<str.size();i++)
std::cout<<"["<<str[i]<<"]= "<<lett_freq[str[i]]<<std::endl;
return 0;
}
/*Output
[ ] = 2
[a] = 2
[c] = 1
[i] = 2
[o] = 1
[t] = 3
[u] = 1
[c]= 1
[i]= 2
[a]= 2
[o]= 1
[ ]= 2
[a]= 2
[ ]= 2
[t]= 3
[u]= 1
[t]= 3
[t]= 3
[i]= 2
*/
Vedi se ti va bene.