第2学期第2週タスク3の統計文字列の単語の個数

2020 ワード

ソース:
/*(        ) 
*             
*Copyright (c) 2011,            
*All rights reserved. 
*    :           
*      :2011  114-3    
*    :2011 3 3  
*   :vc.3
*               
*     :       
*     :           (    )  ,
*      (   ,.;?!5 )  。   :
*how old are you?  I am 20.  :there are 7 words in the line.
*     :       
*           
*/  
#include

using namespace std;

int main()
{
	char str[81];//      80   ,         81   
	int i = 0, num = 0;
	bool isword = false;

	gets(str);//   cin,   cin  ,      ,        

	while(str[i]!='\0')//'\0'         , str[i] = '\0' ,     
	{
		if(str[i] == ' ')//       ,     
		{
			isword = false;
		}
		else if(isword == false)//  ,           ,                    
		{
			isword = true;
			++num;//       
		}
		++i;
	}
	cout << "There are " << num << " words in the line" << endl;

	return 0;
}
実験結果:
経験の蓄積:
1.1行の文字列を出力する場合はgets(...)を使用します.入力、cinを使用すると、スペースに遭遇すると終了します.
上司の感想:
前学期は似たようなプログラムをしたことがありますが、各単語の間にスペースが1つしかありません.これは簡単ですが、2つの単語の間にいくつかのスペースがある場合は、先生が言ったように、ブール型変数を定義することができます.現在の文字がスペースの場合は、単語ではありません.現在の文字がスペースでない場合は、前の文字がスペースなので、単語の個数を計算し始めましたが、句読点語の単語の間にスペースがある場合は、単語として計算されるので、私はまた少し変更しました...
#include

using namespace std;

int main()
{
	char str[81];//      80   ,         81   
	int i = 0, num = 0;
	bool isword = false;

	gets(str);//   cin,   cin  ,      ,        

	while(str[i]!='\0')//'\0'         , str[i] = '\0' ,     
	{
		if(str[i] == ' ' || str[i] == '?' || str[i] == '.' || str[i] == ',' || str[i] == ';' || str[i] == '!')//          ,     
		{
			isword = false;
		}
		else if(isword == false)//  ,           ,                    
		{
			isword = true;
			++num;//       
		}
		++i;
	}
	cout << "There are " << num << " words in the line" << endl;

	return 0;
}