各単語は AZ (または az) 以外の任意の文字で区切ることができることを知って、文字列内の単語数を見つけることになっているコードを書いています。私が書いたコードは、文頭に句読点がない場合にのみ正常に動作します。しかし、引用符などの句読点で文を開始すると問題が発生します (つまり、"Only connect." は結果として 2 語ではなく 3 語を表示します)。Dev-C++ を使用して C++ でプログラミングしています。あなたの助けに感謝します。私のコードは以下の通りです:
#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 . . .