簡體   English   中英

編寫一個程序來計算每個單詞在其輸入中出現的次數

[英]Write a program to count how many times each distinct word appears in its input

這是加速C ++中的一個問題(3-3)。

我是C ++的新手。 我已經考慮了很長時間,但是我無法弄清楚。 誰能為我解決這個問題? 請詳細解釋一下,您知道我不太擅長編程。 告訴我您使用的變量的含義。

最好的數據結構類似於std::map<std::string,unsigned> ,但是直到第7章您都不會遇到映射。

以下是基於第3章內容的一些提示:

  • 您可以將字符串放入向量中,因此可以使用std::vector<std::string>
  • 可以比較字符串,因此std::sort可與std::vector<std::string> ,並且可以檢查兩個字符串是否都相同,並且s1==s2就像整數一樣。
  • 您在第一章中看到,如果sstd::string ,則std::cin >> sstd::cin讀入s

為了提供最佳的學習體驗,我將不會提供可粘貼的代碼。 那是練習。 您必須自己做才能盡可能多地學習。

這是采用一種映射的完美方案,該映射可在訪問不存在的鍵時創建其值類型。 幸運的是,C ++在其標准庫中有一個這樣的映射: std::map<key_type,value_type>正是您所需要的。

所以這是拼圖碎片:

  • 您可以使用運算符>>單詞到單詞將單詞逐字讀入字符串
  • 您可以在單詞(字符串)到事件(無符號數字類型)的映射中存儲找到的內容
  • 當您通過不存在的鍵訪問地圖中的條目時 ,地圖將幫助您在該鍵下創建一個新的默認構造值; 如果值恰好是數字,則默認構造會將其設置為0 (零)

祝您玩得開心!

這是我的提示。 std::map將成為您的朋友。

好吧,您需要一種從輸入流中獲取單個單詞的方法(例如,類似於“標准輸入流”中所應用的“輸入流”方法),以及一種將這些字符串和計數存儲在某種“集合”中的方法。

我天生的作業冷嘲熱諷和對生活的普遍冷漠使我此刻無法添加更多細節:-)

我使用的任何變量的含義都是不言而喻的,因為我傾向於使用諸如objectsRemaininghasBeenOpened類的東西。

這是一個您可以使用的算法,嘗試對某些內容進行編碼並將結果放在此處。 人們可以幫助您進一步發展。

向下掃描收集每個字母的字符串,直到到達單詞邊界(例如空格或。或等)。 將該單詞與您已經找到的單詞進行比較,如果已經找到,則將該單詞的計數加一。 如果不是,則將該單詞添加到找到的單詞列表中(計數為1)。

繼續進行下去

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM