52 lines
1.4 KiB
C++
52 lines
1.4 KiB
C++
|
// stacktem.cpp -- testing the template stack class
|
||
|
#include <iostream>
|
||
|
#include <string>
|
||
|
#include <cctype>
|
||
|
#include "stacktp.h"
|
||
|
using std::cin;
|
||
|
using std::cout;
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
Stack<std::string> st; // create an empty stack
|
||
|
char ch;
|
||
|
std::string po;
|
||
|
cout << "Please enter A to add a purchase order,\n"
|
||
|
<< "P to process a PO, or Q to quit.\n";
|
||
|
while (cin >> ch && std::toupper(ch) != 'Q')
|
||
|
{
|
||
|
while (cin.get() != '\n')
|
||
|
continue;
|
||
|
if (!std::isalpha(ch))
|
||
|
{
|
||
|
cout << '\a';
|
||
|
continue;
|
||
|
}
|
||
|
switch(ch)
|
||
|
{
|
||
|
case 'A':
|
||
|
case 'a': cout << "Enter a PO number to add: ";
|
||
|
cin >> po;
|
||
|
if (st.isfull())
|
||
|
cout << "stack already full\n";
|
||
|
else
|
||
|
st.push(po);
|
||
|
break;
|
||
|
case 'P':
|
||
|
case 'p': if (st.isempty())
|
||
|
cout << "stack already empty\n";
|
||
|
else {
|
||
|
st.pop(po);
|
||
|
cout << "PO #" << po << " popped\n";
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
cout << "Please enter A to add a purchase order,\n"
|
||
|
<< "P to process a PO, or Q to quit.\n";
|
||
|
}
|
||
|
cout << "Bye\n";
|
||
|
// cin.get();
|
||
|
// cin.get();
|
||
|
return 0;
|
||
|
}
|