Jeżeli pobierałbyś int to możesz używać operacji modulo (do uzyskania ostatniej liczby):
#include <iostream>
using namespace std;
int main()
{
const int tab_size = 10;
int tab[tab_size]={0};
cout << "Podaj liczbę: "<<endl;
int num;
cin >> num;
do
{
tab[num % 10]++;
} while (num /= 10);
for(int i=0;i<tab_size;i++)
{
// if(tab[i]==0)
cout << char(i+'0')<< " wystapilo " << tab[i]<<endl;
}
}
Jeżeli chodzi o łańcuch posiadający również cyfry to możesz zrobić to analogicznie:
#include <iostream>
using namespace std;
int main()
{
const int tab_size = 10;
int tab[tab_size]={0};
string zdanie;
cout << "Napisz zdanie "<<endl;
getline(cin,zdanie);
for(int i=0;i<zdanie.length();i++)
{
if (zdanie[i] >= '0' && zdanie[i] <= '9')
{
tab[zdanie[i]-'0']++;
}
}
cout<<endl<<endl;
for(int i=0;i<tab_size;i++)
{
// if(tab[i]==0)
cout << char(i+'0')<< " wystapilo " << tab[i]<<endl;
}
}