1. 程式人生 > >C++程式設計實驗報告(三十)---第二週任務三(3-2)

C++程式設計實驗報告(三十)---第二週任務三(3-2)

第二週報告3-2:句子的標準化

實驗目的:將句子標準化。
實驗內容:輸入一行字元,要求指:行首的第一個字元不能是空格;兩個單詞間只能有1 個空
格且必須有1 個空格;標點符號前面是單詞中的最後一個字母,後面有且只能有一個
空格。

* 程式頭部註釋開始
* 程式的版權和版本宣告部分
* Copyright (c) 2012煙臺大學計算機學院學生
* All rights reserved.
* 檔名稱: array.cpp
* 作 者: 劉鎮
* 完成日期: 2012 年 2 月 28 日
* 版 本 號: 1.027

* 對任務及求解方法的描述部分
* 輸入描述:輸入一行字元

* 問題描述:......

* 程式輸出:按照標準化輸出輸入的句子。

* 程式頭部的註釋結束

#include<iostream>

#include"string.h"

using namespace std;

int main()
{
	char line1[100], line2[100];
	
	cout << "Enter your words:" << endl;
	
	gets(line1);
	
	int i;
	
	for(int j = 0; j <= 100; )
	{
		for(i = 0; i <= 100; ++i)
		{
			if(j == 0)
			{
				if(line1[i] == ' ')
				{
					continue;
				}
				
				else
				{
					line2[j] = line1[i];
					++j;
					continue;
				}
			}
			
			else
			{
				if(line1[i] == ' ' && (line1[i+1] == ' ' || line1[i+1] == '?' || line1[i+1] == '!' || line1[i+1] == ',' || line1[i+1] == '.'))
				{
					continue;
				}
				
				else if((line1[i] == '?' || line1[i] == '!' || line1[i] == ',' || line1[i] == '.') && (line1[i+1] != ' '))
				{
					line2[j] = line1[i];
					line2[j+1] = ' ';
					j = j + 2;
				}
				
				else
				{
					line2[j] = line1[i];
					++j;
				}
			}
		}
	}
	cout << "The new line is:" << line2 << endl;
	return 0;
}


執行結果:


經驗積累:

1、問題的拆分,將問題分為3或4個順序結構的小問題,即開頭處的空格處理,中間句子出現的多空格,句尾處標標準化處理。

2、這個問題可以將第一個問題單獨做一個迴圈,接下來處理後續問題。

上機感言:

還是靈感和素養的積累,大的思路與方向是需要標準化處理的,當你有對問題的處理思路,不管問題有多複雜,都可以有思路,但靈感是將問題具體化實現。