954,504 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

vowels,consonants and special symbols

Hi friends.. Last day at school my teacher gave the following code.. But it is not working.. 16 errors.. I am a beginner in C++ .I badly need your guidance a help in finding the errors... the for loops is all wrong.. To be frank I don't understand the working of this program.. please help me understand it,wont you?

here is the code

#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char line[80];

int k,len,vow,cons,sp;
cout<<"Enter the string ";
cin.getline(len i,80);
for(i=0;line[len]!=10;len++)
{
if (line[k]!=" ")
if(line[k]=="A"||line[k]=="E"||line[k]=="I"||line[k]=="O"||line[k]=="U"||line[k]=="a"||line[k]=="e"||line[k]=="o"||line[k]=="u");
vow++;

else if(( line [k]>='A'&&line[k]<='Z')||(line[k]>='a'&&line[k]<='z'))
cons++;
else sp++;
{
cout<<"no of vowels = "<<vow;
cout<<"number of constants ="<<cons;
cout<<"No of special characters ="<<sp;
getch();
}
jeevsmyd
Junior Poster
142 posts since Oct 2008
Reputation Points: 8
Solved Threads: 0
 

first, format the code so that it uses proper indentation, and braces. That's the first step.

Comatose
Taboo Programmer
Team Colleague
2,910 posts since Dec 2004
Reputation Points: 361
Solved Threads: 215
 

Buddy.. the problem is that I don't understand the first part of the code,ie the for loop and len.. what is line k? please please help me...
then i will format it with braces and all

jeevsmyd
Junior Poster
142 posts since Oct 2008
Reputation Points: 8
Solved Threads: 0
 

I guess the lessons of the previous thread haven't sunk in yet.
http://www.daniweb.com/forums/thread177531.html

Here's how to start

for(i=0;line[len]!=10;len++) <strong>{</strong>
<strong>}</strong>

Now press compile AND make sure it works.

Now add a few (not ALL) of your lines of code for the loop body, and try to compile it again.

Also learn to put { } on ALL your for loops, while loops, if statements and switch/case statements. It'll save you from spending ages finding yet another stupid bug because the code did what you asked it to, not what you thought you wanted.

Salem
Posting Sage
Team Colleague
11,531 posts since Dec 2005
Reputation Points: 5,862
Solved Threads: 953
 

what is it supposed to do ,bro??

arghasen
Light Poster
35 posts since Nov 2008
Reputation Points: 10
Solved Threads: 5
 

oh sorry i put up the post without refeshing my page,so didnt see that so many lesons have been put up for u already

arghasen
Light Poster
35 posts since Nov 2008
Reputation Points: 10
Solved Threads: 5
 

Friends I cant thank you enough for your help and guidance.. Am working hard to become a C++ programmer

jeevsmyd
Junior Poster
142 posts since Oct 2008
Reputation Points: 8
Solved Threads: 0
 
#include<iostream.h>
#include<conio.h>
#include<string.h>
void main()
{
char line[80];

int k,len,vow,cons,sp;
cout<<"Enter the string ";
cin.getline(len i,80);
for(i=0;line[len]!=10;len++)

{
if (line[k]!=" ")
if(line[k]=='A'||line[k]=='E'||line[k]=='I'||line[k]=='O'||line[k]=='U'||line[k]=='a'||line[k]=='e'||line[k]=='i'||line[k]=='o'||line[k]=='u');
vow++;

else if(( line [k]>='A'&&line[k]<='Z')||(line[k]>='a'&&line[k]<='z'))
cons++;
else sp++;
{
cout<<"no of vowels = "<<vow;
cout<<"number of constants ="<<cons;
cout<<"No of special characters ="<<sp;
getch();
}


I made some corrections.. now what is use of "i" ? Now there are 6 more errors.. It says that undefined symbol i ... Do reply buddies

jeevsmyd
Junior Poster
142 posts since Oct 2008
Reputation Points: 8
Solved Threads: 0
 

take the code i give
u will understand urself
#include<iostream.h>
#include<conio.h>
#include<string.h>
int main()
{
char line[80];

int k,len,vow=0,cons=0,sp=0,i;
cout<<"Enter the string ";
gets(line);
for(k=0;line[k]!='\0';k++)
{
if (line[k]!=32 )//Ascii code for blank
{
if(line[k]=='A'||line[k]=='E'||line[k]=='I'||line[k]=='O'||line[k]=='U'||line[k]=='a'||line[k]=='e'||line[k]=='o'||line[k]=='u')
vow++;
else if(( line [k]>='A'&&line[k]<='Z')||(line[k]>='a'&&line[k]<='z'))
cons++;
else sp++;
}
}
cout<<"no of vowels = "<<vow;
cout<<"number of constants ="<<cons;
cout<<"No of special characters ="<<sp;
getch();
}

arghasen
Light Poster
35 posts since Nov 2008
Reputation Points: 10
Solved Threads: 5
 

the funcion gets does the job of taking the data in a line
i have not use cin.getline so i cant tell about that and the i in ur program is wrong it should be k as in my program

arghasen
Light Poster
35 posts since Nov 2008
Reputation Points: 10
Solved Threads: 5
 

This code is working perfectly.. but what is wrong with code that I gave you..? cant u modify it so that it would work.. using getline and not gets

jeevsmyd
Junior Poster
142 posts since Oct 2008
Reputation Points: 8
Solved Threads: 0
 
gets(line);
for(k=0;line[k]!='\0';k++)
{
if (line[k]!=32 )//Ascii code for blank
{
      if(line[k]=='A'

I dont understand this portion.. please kindly explain the working.. what exactly is "k" doing?

what is the difference between if (line[k]!=32 ) and if (line[k]!=" " )

jeevsmyd
Junior Poster
142 posts since Oct 2008
Reputation Points: 8
Solved Threads: 0
 

I guess you want to count the number of vowels, consonants etc.
Good,
you are almost there, lets look what wrong you did. I am referring to your orignal code.

cin.getline(len i,80);

This is totally wrong,
the syntax is

cin.getline(cstring,MAXINPUT)

So, in your case it should have been

cin.getline(line,80);


Next:
len is uninitialized, i.e. it contains junk values. Initialize it using strlen(line). strlen() is a function (in string.h) which returns the length of the string.
strlen("hello")=5

Next problem is the loop condition:

for(i=0;line[len]!=10;len++)

i is not defined use k instead. Moreover the condition is wrong, it should be (kfor(k=0;k<len;k++)

I also encourage you to use isalpha() which tells you if a character is a Alphabet.

It seems that you are very new to the language. Never mind, everyone starts from one.
But always remember to use standard compilers. I understand your school force you to use a nonstandard compiler like TC++ but then too its never too late to switch. Read : http://cppdb.blogspot.com/2008/10/why-you-shouldnt-use-you-use-old-c.html

Also, I know I have not explained every bit of your code to you. But if you require explanation in detail, feel free to ask.
Thank U

siddhant3s
Practically a Posting Shark
816 posts since Oct 2007
Reputation Points: 1,486
Solved Threads: 140
 
/*
The English consonants are: 
    b, c, d, f, g, h, j, k, l, m, n,
    p, q, r, s, t, v, w, x, y, z. 
The English vowels are: a, e, i, o, u. 
The letter y can also act as a vowel.
http://members.fortunecity.com/leanora/engpinen.html
*/
/* Dependencies:
#include <iostream>
#include <iomanip>
#include <string>
*/
using namespace std;
const string
    Digits("0123456789"),
    Vowels("AEIOUaeiou"/* add national vowels */),
    Spaces(" \t\r\n"),
    Consonants(
        "BCDFGHJKLMNPQRSTVWXYZ"
        "bcdfghjklmnpqrstvwxyz"
        /* add national consonants */
    );
const string::size_type NotFound = string::npos;
int main()
{
    string line;
    cout << "Let\'s play with phonetics...\n\n";
    while (
        cout << "Please, type a sentence"
                " or press Enter to quit:\n",
        getline(cin,line) && line.length()
          ) 
    {   // Comment the next line if you wish...
        cout << line << '\n'; // echo for <file
        char c;
        int vowels = 0,
            consonants = 0,
            whitespaces = 0,
            digits = 0,
            others = 0
            ;
        for (size_t i = 0; i < line.length(); ++i) {
            c = line[i];
            if (Consonants.find(c)  != NotFound)
                ++consonants;
            else if (Vowels.find(c) != NotFound)
                ++vowels;
            else if (Digits.find(c) != NotFound)
                ++digits;
            else if (Spaces.find(c) != NotFound)
                ++whitespaces;
            else
                ++others;
        }
        cout 
        << setw(4) << consonants << " consonants\n"
        << setw(4) << vowels     << " vowels\n"
        << setw(4) << digits     << " digits\n"
        << setw(4) << whitespaces<< " whitespaces\n"
        << setw(4) << others     << " others"
        << endl;
    }
    return 0;
}
ArkM
Postaholic
2,001 posts since Jul 2008
Reputation Points: 1,234
Solved Threads: 348
 

>I dont understand this portion.. please kindly explain the working.. what exactly is "k" doing?

"k" is a variable that gets incremented with each character in the line. Thus, line[k] is the current character in the loop.

>what is the difference between if (line[k]!=32 ) and if (line[k]!=" " )

No difference. ASCII 32 = space (I think :P). It would be line[k] != ' ', a single-quote denotes a char, double a C-string.

mpnk121
Newbie Poster
5 posts since Feb 2009
Reputation Points: 10
Solved Threads: 0
 

On ArkM's post,
Please try not to give the full answer in your post.

siddhant3s
Practically a Posting Shark
816 posts since Oct 2007
Reputation Points: 1,486
Solved Threads: 140
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You