Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

problem in sorting&counting

turbo pascalturbo pascal Posts: 13Member
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..
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…

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 it didn't work..

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.

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;
}






Comments

  • TremereTremere Posts: 8Member
    I think you'll find it much easier to check for alphabetical order with their corresponding ascii number instead. As for the list of numbers, I don't remember what they were, but it shouldn't be too hard to search for it on the web.

    : 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..
    : 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…
    :
    : 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 it didn't work..
    :
    : 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.
    :
    : 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;
    : }
    :
    :
    :
    :
    :
    :
    :

Sign In or Register to comment.