Listing 1-1 A file containing a C++ interface for bags |
/** @file BagInterface.h */
# ifndef _BAG_INTERFACE
# define _BAG_INTERFACE
# include < vector >
template < class ItemType >
class BagInterface
{
public:
/** Gets the current number of entries in this bag.
@return The integer number of entries currently in the bag. */
virtual int getCurrentSize () const = 0;
/** Sees whether this bag is empty.
@return True if the bag is empty, or false if not. */
virtual bool isEmpty () const = 0;
/** Adds a new entry to this bag.
@post If successful, newEntry is stored in the bag and
the count of items in the bag has increased by 1.
@param newEntry The object to be added as a new entry.
@return True if addition was successful, or false if not. */
virtual bool add (const ItemType & newEntry) = 0;
/** Removes one occurrence of a given entry from this bag,
if possible.
@post If successful, anEntry has been removed from the bag
and the count of items in the bag has decreased by 1.
@param anEntry The entry to be removed.
@return True if removal was successful, or false if not. */
virtual bool remove (const ItemType & anEntry) = 0;
/** Removes all entries from this bag.
@post Bag contains no items, and the count of items is 0. */
virtual void clear () = 0;
/** Counts the number of times a given entry appears in bag.
@param anEntry The entry to be counted.
@return The number of times anEntry appears in the bag. */
virtual int getFrequencyOf (const ItemType & anEntry) const = 0;
/** Tests whether this bag contains a given entry.
@param anEntry The entry to locate.
@return True if bag contains anEntry, or false otherwise. */
virtual bool contains (const ItemType & anEntry) const = 0;
/** Empties and then fi lls a given vector with all entries that
are in this bag.
@return A vector containing all the entries in the bag. */
virtual vector < ItemType > toVector () const = 0;
}
; // end BagInterface
|
Listing 1-2 Program for Card Guessing |
# include < iostream > // For cout and cin
# include < string > // For string objects
# include "Bag.h" // For ADT bag
using namespace std;
int main ()
{
string clubs [] = {"Joker", "Ace", "Two", "Three",
"Four", "Five", "Six", "Seven",
"Eight", "Nine", "Ten", "Jack",
"Queen", "King"};
// Create our bag to hold cards.
Bag < string > grabBag;
// Place six cards in the bag.
grabBag.add (clubs [1]);
grabBag.add (clubs [2]);
grabBag.add (clubs [4]);
grabBag.add (clubs [8]);
grabBag.add (clubs [10]);
grabBag.add (clubs [12]);
// Get friends guess and check it.
int guess = 0;
while (!grabBag.isEmpty ())
{
cout << "What is your guess?"
<< "(1 for Ace to 13 for King):";
cin >> guess;
// Is card in the bag?
if (grabBag.contains (clubs [guess]))
{
// Good guess remove card from the bag.
cout << "You get the card!\n";
grabBag.remove (clubs [guess]);
}
else
{
cout << "Sorry, card was not in the bag.\n";
} // end if
} // end while
cout << "No more cards in the bag. Game over!\n";
return 0;
}
; // end main
|