2012-10-25 60 views
3

我工作的一個個人項目,但我不知道如何做到這一點的信件:ANSI C - 計數的單詞和每行

  • 算的話(每個字花費$ 5 USD)
  • 計數每個字的字母(如果這個詞有少於4個字母費用$ 4美元,如果超過4個字母它的成本$ 5美元)

這是到目前爲止我的代碼:

預期輸出的3210

例子:

The cost is: $24 USD 

我只是不知道下一步該做什麼,任何幫助將不勝感激:)謝謝。

更多的解釋:

假設用戶介紹文字:

Lorem ipsum dolor sit ameth 

所以該方案將考慮每個字,例如「排版」它有5個字母,它的成本是字$ 5美元..現在「ipsum」也有5個字母,所以另外5美元..「dolor」有5個,所以其他5美元...「坐」有3個字母,所以我們總結了另一個4美元...「 ameth「有5個,所以5美元以上...

本文的費用是:24美元

+2

首先,描述如何在沒有計算機的情況下做到這一點。進入極端細節,假定該人不知道「單詞」是什麼。假設該人甚至不知道如何計算單詞中的字母數量。 –

+0

您要研究'strtok' –

+0

只需添加更多信息:)謝謝 – Daniel

回答

5

我會做籠統什麼:

  1. 載文 - 除了錯誤處理/輸入驗證/溢出,你有正確的想法。

  2. 使用來自string.hstrtok()將輸入標記爲單詞。查看它,但它基本上使用您提供的分隔符將您的輸入字符串(可能爲txt)拆分爲所需的標記(例如 - delimiter =「space」會將輸入拆分爲每個「簡單」是新詞的唯一分界線)。它在每次迭代時的輸出(通常在循環中調用strtok)是下一個標記或「字」。

  3. 使用strlenstrtok生產的每個結果的CString計算每個「單詞」

是的,我知道,我們恨cplusplus.com的大小,但這個例子似乎確定初始一目瞭然(證實 - 作品):

/* strtok example */ 
#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char str[] ="- This, a sample string."; 
    char * pch; 
    printf ("Splitting string \"%s\" into tokens:\n",str); 
    pch = strtok (str," ,.-"); 
    while (pch != NULL) 
    { 
    printf ("%s\n",pch); 
    pch = strtok (NULL, " ,.-"); 
    } 
    return 0; 
} 

之所以令牌化語法看起來有點怪異是因爲:

Description of STRTOK function and explanation of its syntax

警告:從鏈接中可以明顯看出,strtok修改了您傳遞它的原始字符串。因此,如果您想保留它以達到其他光榮目的,請在某處保留一份安全副本。

+0

嘿,非常感謝,讓我試試你的代碼,並會回到這裏,希望你能多幫忙多一些:) – Daniel

+0

@Daniel沒問題,只要回來,如果你需要幫助 –