2017年12月4日 星期一

題目17. 英文斷詞(C++)

題目17. 英文斷詞

問題描述 :
斷詞在自然語言的研究上是個很重要的步驟,主要就是將關鍵字從句子中斷出,英文的斷詞較為簡單,就根據句子中的空格將英文字隔開。
輸入說明 :
輸入一句英文敘述句。 字元數≤1000。
輸出說明 :
將輸入的句子進行斷詞,將斷出的關鍵字依照句子中的出現排序列印出。全部轉成小寫,列印出的關鍵字不得重複,關鍵字間以一個空格隔開,最後一個關鍵字後面進行換行。例如輸入 How do you do ,則輸出 how do you 。
範例 :
輸入範例輸出範例
How do you dohow do you



  1. #include <iostream>  
  2. #include <string>  
  3. #include <sstream>  
  4. #include <stdio.h>  
  5. #include <ctype.h>  
  6.   
  7. using namespace std;  
  8.   
  9. int main() {  
  10.     // 題目17. 英文斷詞  
  11.     string text;  
  12.     getline(cin, text);//使用者輸入  
  13.     //全轉小寫  
  14.     for(int i = 0;i < text.size();i++)  
  15.     {  
  16.         text[i] = (char)tolower(text[i]);  
  17.     }  
  18.     string tok[1000];//切割後的字串  
  19.     string fin[1000];//沒有重複的才放入fin[]  
  20.     int count = 0;  
  21.     bool exist = true;  
  22.     fill(tok, tok+1000, "");  
  23.     fill(fin, fin+1000, "");  
  24.     stringstream ss(text);  
  25.     string token;  
  26.     //字串切割  
  27.     while (getline(ss, token, ' '))  
  28.     {  
  29.         tok[count] = token;  
  30.         count++;  
  31.     }  
  32.     int fpos = 0;  
  33.     //比對  
  34.     for (int i = 0; i < count; i++)  
  35.     {  
  36.         //tok[], fin[]  
  37.         //尋找tok[]如果沒有存在在fin中[]就存入fin[]  
  38.         for(int j = 0;j < count;j++)  
  39.         {  
  40.             if(tok[i] == fin[j])//如果存在在fin就false  
  41.             {  
  42.                 exist = false;  
  43.             }  
  44.         }  
  45.         if(exist == true)//不存在在fin就放入fin  
  46.         {  
  47.             fin[fpos] = tok[i];  
  48.             fpos++;  
  49.         }  
  50.         exist = true;  
  51.     }  
  52.     //輸出  
  53.     for (int i = 0; i < fpos; i++)  
  54.     {   
  55.         if(i == fpos-1)  
  56.         {  
  57.             cout << fin[i] << endl;  
  58.         }  
  59.         else  
  60.         {  
  61.             cout << fin[i] << " ";  
  62.         }  
  63.     }  
  64.     return 0;  

沒有留言:

張貼留言