Hi, I have a program that should read a line of text and output the number of words in the line and the number of occurrences of each letter. the output of the letters must be in alphabetical order counting both upper and lowercase versions .(ex input: Hello Hi. And the output: there are 2 words

1 e

2 h

1 i

2 l

1 o

I've done the first part but I couldn't solve the second part. first, I changed all the uppercase to lowercase.then,I found this sort but I have the spaces and other punctuations showing with it..

Code:

do
{
finish = 0;
for ( i = 0; i < x - 1; i++) // sorting the string..
{
if (s[i] > s[i + 1])
{
hold = s[i];
s[i] = s[i + 1];
s[i + 1] = hold;
finish = 1;
}
}
}while (finish != 0) ;

* so I decided to delete everything that is not a letter but it didn't work…

Code:

for (i=0; i<size; i++) // string contains only letters..
if (isalpha(s[i]))
temp[i]=s[i] ;

* and I thought of another way that also didn't work..

Code:

for (i=0; i<size; i++) // string contains only letters..
if (!isalpha(s[i]))
s[i]=s[i+1] ;

* finally I decided to do the counting any way, but I have the occurrences of each letter repeated as many times as it occurred, as well as ,counting punctuations.

Code:

for ( i=0;i<x;i++) //counting the occurrences of each letter..
{ for(j=0;j<x;j++)
{
if (s[i]==s[j])
a++ ;
}
cout << s[i] << " occured : " <<a << endl;
a=0;
}
cout << endl;
return 0;
}

what can i do ??!!