summaryrefslogtreecommitdiff
path: root/chapter6/bag4demo.cxx
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-04-07 23:18:32 -0700
committerFuwn <[email protected]>2024-04-07 23:18:32 -0700
commitc1b6ffe70bd281c6c230fd63fabcaac2aff47514 (patch)
treee8af3b1782a7cd0754590ed618fddc1bdb9b7385 /chapter6/bag4demo.cxx
downloaddscode-main.tar.xz
dscode-main.zip
feat: initial commitHEADmain
Diffstat (limited to 'chapter6/bag4demo.cxx')
-rw-r--r--chapter6/bag4demo.cxx64
1 files changed, 64 insertions, 0 deletions
diff --git a/chapter6/bag4demo.cxx b/chapter6/bag4demo.cxx
new file mode 100644
index 0000000..994bb3d
--- /dev/null
+++ b/chapter6/bag4demo.cxx
@@ -0,0 +1,64 @@
+// FILE: bag4demo.cxx
+// Demonstration program for the 4th version of the bag
+// (from bag4.h and bag4.template).
+// This is a the same as the demonstration program for bag1,
+// except that we are now using a template class, and we no longer need to
+// check whether the bag reaches its capacity.
+
+#include <iostream> // Provides cout and cin
+#include <cstdlib> // Provides EXIT_SUCCESS
+#include "bag4.h" // Provides the bag<Item> template class
+using namespace std;
+using namespace main_savitch_6A;
+
+// PROTOTYPES for functions used by this demonstration program:
+void get_ages(bag<int>& ages);
+// Postcondition: The user has been prompted to type in the ages of family
+// members. These ages have been read and placed in the ages bag, stopping
+// when the user types a negative number.
+
+void check_ages(bag<int>& ages);
+// Postcondition: The user has been prompted to type in the ages of family
+// members once again. Each age is removed from the ages bag when it is typed,
+// stopping when the bag is empty.
+
+
+int main( )
+{
+ bag<int> ages;
+
+ get_ages(ages);
+ check_ages(ages);
+ cout << "May your family live long and prosper." << endl;
+ return EXIT_SUCCESS;
+}
+
+
+void get_ages(bag<int>& ages)
+{
+ int user_input; // An age from the user's family
+
+ cout << "Type the ages in your family. ";
+ cout << "Type a negative number when you are done:" << endl;
+ cin >> user_input;
+ while (user_input >= 0)
+ {
+ ages.insert(user_input);
+ cin >> user_input;
+ }
+}
+
+void check_ages(bag<int>& ages)
+{
+ int user_input; // An age from the user's family
+
+ cout << "Type those ages again. Press return after each age:" << endl;
+ while (ages.size( ) > 0)
+ {
+ cin >> user_input;
+ if (ages.erase_one(user_input))
+ cout << "Yes, I've got that age and have removed it." << endl;
+ else
+ cout << "No, that age does not occur!" << endl;
+ }
+}