home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / VSCPPv8.zip / VACPP / IBMCPP / samples / IOC / WORDBAG / WORDBAG.CPP < prev    next >
Text File  |  1995-03-15  |  3KB  |  70 lines

  1. /*************************************************************************
  2.   IBM C/C++ Tools Version 3.00 - Collection Class Library
  3.  (C) Copyright IBM Corporation 1992 ,1995, Licensed Program-Property of
  4.  IBM.  All Rights Reserved.  US Government Users Restricted Rights - Use,
  5.  duplication or disclosure restricted by GSA ADP Schedule Contract with
  6.  IBM Corp.
  7.  *************************************************************************/
  8.  
  9. /*---------------------------------------------------------------*\
  10. |  wordbag.CPP  -  Word Bag, example for the use of the           |
  11. |                  Key Sorted Bag to perform statistics on words. |
  12. |                  """"""""""""""                                 |
  13. |  The elements handled in the collections are the words of a     |
  14. |  phrase. The key of each word is the number of its letters.     |
  15. |  The Key Sorted Bag will store all occurences of each key.      |
  16. |  We use this to calculate the number of n-letter words in       |
  17. |  the phrase.                                                    |
  18. |                                                                 |
  19. \*---------------------------------------------------------------*/
  20.  
  21.    #include <iostream.h>
  22.                                 // Class Word
  23.    #include "toyword.h"
  24.                                 // Let's use the defaults:
  25.    #include <iksbag.h>
  26.  
  27.    typedef IKeySortedBag <Word, unsigned> WordBag;
  28.  
  29.  
  30. int main()
  31. {
  32.    IString    phrase[] = {"people", "who", "live", "in", "glass",
  33.                    "houses", "should", "not", "throw", "stones"};
  34.    const size_t phraseWords = sizeof(phrase) / sizeof(IString);
  35.  
  36.    WordBag wordbag(phraseWords);
  37.  
  38.    for (int cnt=0; cnt < phraseWords; cnt++)  {
  39.     unsigned keyValue = phrase[cnt].length();
  40.     Word theWord(phrase[cnt],keyValue);
  41.     wordbag.add (theWord);
  42.    }
  43.  
  44.    cout << "Contents of our WordBag sorted by number of letters:"
  45.         << endl;
  46.  
  47.    WordBag::Cursor wordBagCursor(wordbag);
  48.    forCursor(wordBagCursor)
  49.      cout << "WB: " << wordBagCursor.element().getWord() << endl;
  50.  
  51.    cout << endl << "Our phrase has " << phraseWords << " words."
  52.         << endl;
  53.  
  54.    cout << "In our WordBag are " << wordbag.numberOfElements()
  55.         << " words." << endl << endl;
  56.  
  57.    cout << "There are " << wordbag.numberOfDifferentKeys()
  58.         << " different word lengths." << endl << endl;
  59.  
  60.    wordBagCursor.setToFirst();
  61.    do  {
  62.       unsigned letters = wordbag.key(wordBagCursor.element());
  63.       cout << "There are "
  64.            << wordbag.numberOfElementsWithKey(letters)
  65.            << " words with " << letters << " letters." << endl;
  66.    }  while  (wordbag.setToNextWithDifferentKey(wordBagCursor));
  67.  
  68.    return 0;
  69. }
  70.