2013-07-31 67 views
1

這是我試圖解決的問題:在C++控制檯應用程序計數字符的話

要求用戶輸入一堆話,儘可能多的,因爲他們想要的,直到他們進入一0後 ,計算每個字母在所有單詞中出現的次數,並列出每個字母的列表以及出現次數。例如:

Enter word> hello 
Enter word> lemon 
Enter word> goodbye 
Enter word> 0 
Letter: h appears 1 times 
letter: e appears 3 times 
... 

到目前爲止,我必須把所有的單詞放在一起,並進行了比較。問題在於,在將所有單詞放在一起並輸入0之後,我無法統計組合字符串中的每個單獨字符。我做了一些研究,並且我已經閱讀過要執行此操作需要使用矢量,但我不明白如何使用它們。

我一直在嘗試它一個星期,以得到它的權利,但無濟於事。 C++與我學到的所有其他語言都有所不同(至少對我而言)。

+0

一些想法:爲256個可能的字符(我假設爲ASCII)維護一個數組/矢量,大小爲256,每次讀取新單詞時,都會遍歷該單詞,爲相應字符遞增計數器。 – taocp

+0

他應該看看使用關聯數組。有序地圖或無序地圖在這裏比向量/數組更好。 –

回答

3

您可以使用std::unordered_map,將字符作爲鍵和計數器作爲值。對於您讀取的每個字符串,只需遍歷它並增加與地圖中字符對應的值。

這樣你實際上並不需要存儲單詞。

+0

填寫地圖只是一件事。我覺得OP會手工填寫它。只需遍歷ascii表格字符(需要的那些字符)並以此方式填充即可:) – khajvah

+1

他可能希望在此處使用有序地圖以便輕鬆處理結果,例如按頻率排序。 –

+0

@PaulRenton良好的聲譽。 :) –