I am writing a code where I am supposed to find the number of words in a string, knowing that each word can be delimited by any character other than A-Z (or a-z). The code I wrote works fine only when there is no punctuation at the beginning of the sentence. But the trouble comes when start the sentence with punctuation such as quotation marks (i.e. "Only connect." will display as a result 3 words instead of 2). I am programming in C++ using Dev-C++. Your help will be appreciated. My code is below:
#include <cstring>
#include <iostream>
#include <conio.h>
#include <ctype.h>
using namespace std;
int getline(); //scope
int all_words(char prose[]); //scope
int main()
{
getline();
system ("Pause");
return 0;
}
int getline()
{
char prose[600];
cout << "Enter a sentence: ";
cin.getline (prose, 600);
all_words(prose);
return 0;
}
int all_words(char prose[])
{ int y, i=0, k=0; int count_words=0; char array_words[600], c;
do
{
y=prose[i++];
if (ispunct(y)) //skeep the punctuation
i++;
if ((y<65 && isspace(y)) || (y<65 && ispunct(y))) //Case where we meet spacial character or punctuation follwed by space
count_words++; //count words
if (ispunct(y)) //skeep the punctuation
i++;
}while (y); //till we have a character
cout <<endl<<" here is the number of words "<< count_words <<endl;
return 0;
}
***********************************Output******************************
Enter a sentence: "Only connect!"
here is the number of words 3
Press any key to continue . . .