Number of consonants

answerx's Avatar, Join Date: May 2011
Light Poster
Help me please! I want to make a program that displays the word with the maximum number of consonants from a sentence.
0
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
How far have you got and where are you stuck?
Can you create a program as a start that just displays individual words?
After that you can count the number of consonants in each word and store (a) the number if it's the largest so far and (b) the word itself.
At the end just display the word that you stored before.

Possible algorithm:
count=0; word=""
for each word
consonant count > count? yes: assign count and word
end for
display word.
0
answerx's Avatar, Join Date: May 2011
Light Poster
Here is a variant of my program, please help me find the mistake.

Code:
#include <stdio.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream.h>
#include <string.h>


void main()
{char cons[21]={'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'};
char s[30],x[30][30],z[30]; int i,j=0,k=0,r,f,n,poz,c,max;
clrscr();
printf("Type sentence:");
gets(s);n=strlen(s);r=0;k=0;

for(i=0;i<n;i++){
if((s[i]!=' ')&&(s[i]!='.')){x[r][k]=s[i];k++;}
if((s[i]==' ')||(s[i]=='.')){x[r][k]='\0';r++;k=0;}}

for(i=0;i<r;i++)
for(j=0;j<strlen(x[i]);j++)
for(k=0;k<21;k++)
if(x[j]=cons[k]) {c++;}
z[i]=c;
max=z[0]; poz=0;
for(i=0;i<r;i++)
if(max<z[i])
{max=z[i];poz=i;}
puts(x[poz]);}

Last edited by shabbir; 24May2011 at 21:50.. Reason: Code blocks
0
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
I'm not surprised you can't debug that code; it's a horrendous mess. Use meaningful variable names, indent code correctly, and use code tags when posting here. You can identify code problems by adding printf statements to it that display intermediate results, for instance as I hinted you could try displaying words as you pull them out of the sentence, then display the consonant count and if it's greater than the previous greatest; these should all help you find the problems.

Why is it "a variant on your program" and not your program itself? Did you find this example online instead of writing it yourself?
0
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
Your if statement contains an assignment. You probably wanted to do a comparison.
0
answerx's Avatar, Join Date: May 2011
Light Poster
Of course I wroted myself, if I had found it on the internet it would be correct.
0
answerx's Avatar, Join Date: May 2011
Light Poster
Quote:
Originally Posted by xpi0t0s View Post
Your if statement contains an assignment. You probably wanted to do a comparison.
Yes it's a comparison, thanks for the correction. But it still doesn't work.
0
xpi0t0s's Avatar, Join Date: Aug 2004
Mentor
Quote:
Originally Posted by answerx View Post
Of course I wroted myself, if I had found it on the internet it would be correct.
lol
0
answerx's Avatar, Join Date: May 2011
Light Poster
Quote:
Originally Posted by xpi0t0s View Post
lol
What can I say, I'm a beginner.
0
answerx's Avatar, Join Date: May 2011
Light Poster
A little help please!