Question: Redo Exercise 4 so that the customer can select multiple items of a particular type. A sample output in this case is: Welcome to Johnny's
Redo Exercise 4 so that the customer can select multiple items of a particular type. A sample output in this case is:
Welcome to Johnny's Resturant ----Today's Menu---- 1: Plain Egg $1.45 2: Bacon and Egg $2.45 3: Muffin $0.99 4: French Toast $1.99 5: Fruit Basket $2.49 6: Cereal $0.69 7: Coffee $0.50 8: Tea $0.75
You can make up to 8 different selections Do you want to make selection Y/y (Yes), N/n (No): Y
Enter item number: 1
How many orders: 3
Select another item Y/y (Yes), N/n (No): Y
Enter item number: 8
How many orders: 1
Select another item Y/y (Yes), N/n (No): N
Welcome to Johnny's Resturant 3 Plain Egg $4.35 1 Tea $0.75 Tax $0.26 Amount Due $5.35
Exercise 4 code:
#include
using namespace std;
const int NO_OF_ITEMS = 8;
struct menuItemType { string menuItem; double menuPrice; };
void getData(ifstream& inFile, menuItemType mList[], int listSize); void showMenu(menuItemType mList[], int listSize); void printCheck(menuItemType mList[], int listSize, int cList[], int cListLength); void makeSelection(int listSize, int cList[], int& cListLength); bool isItemSelected(int cList[], int cListLength, int itemNo);
int main() { menuItemType menuList[NO_OF_ITEMS]; int choiceList[NO_OF_ITEMS]; int choiceListLength;
ifstream inFile;
cout << fixed << showpoint << setprecision(2);
inFile.open("Ch9_Ex4Data.txt");
if (!inFile) { cout << "Cannot open the input file. Program Terminates!" << endl; return 1; }
getData(inFile, menuList, NO_OF_ITEMS); showMenu(menuList, NO_OF_ITEMS); makeSelection(NO_OF_ITEMS, choiceList, choiceListLength); printCheck(menuList, NO_OF_ITEMS, choiceList, choiceListLength);
return 0; }
void getData(ifstream& inFile, menuItemType mList[], int listSize) { char ch; for (int i = 0; i < listSize; i++) { getline(inFile, mList[i].menuItem); inFile >> mList[i].menuPrice; inFile.get(ch); } }
void showMenu(menuItemType mList[], int listSize) { cout << "Welcome to Johnny's Resturant" << endl; cout << "----Today's Menu----" << endl;
for (int i = 0; i < listSize; i++) cout << i+1 << ": " << left << setw(15) << mList[i].menuItem << right << " $" << mList[i].menuPrice << endl; cout << endl; }
void printCheck(menuItemType mList[], int listSize, int cList[], int cListLength) { int i; double salesTax; double amountDue = 0;
cout << "Welcome to Johnny's Resturant" << endl; for (i = 0; i < cListLength; i++) { cout << left << setw(15) << mList[cList[i]].menuItem << right << " $" << setw(4) << mList[cList[i]].menuPrice << endl; amountDue += mList[cList[i]].menuPrice; }
salesTax = amountDue * .05; cout << left << setw(15) << "Tax " << right << " $" << salesTax << endl; amountDue = amountDue + salesTax; cout << left << setw(15) << "Amount Due " << right << " $" << amountDue << endl; }
void makeSelection(int listSize, int cList[], int& cListLength) { int selectionNo = 0; int itemNo;
char response;
cListLength = 0;
cout << "You can make up to " << listSize << " single order selections" << endl;
cout << "Do you want to make selection Y/y (Yes), N/n (No): "; cin >> response; cout << endl;
while ((response == 'Y' || response == 'y') && cListLength < 8) { cout << "Enter item number: "; cin >> itemNo; cout << endl;
if (!isItemSelected(cList,cListLength,itemNo)) cList[cListLength++] = itemNo - 1; else cout << "Item already selected" << endl;
cout << "Select another item Y/y (Yes), N/n (No): "; cin >> response; cout << endl; } }
bool isItemSelected(int cList[], int cListLength, int itemNo) { bool found = false;
for (int i = 0; i < cListLength; i++) if (cList[i] == itemNo) { found = true; break; }
return found; }
Please post text, not just images.
There is a data sheet called Ch9_Ex5Data.txt to pull from, It is laid out like this Plain Egg 1.45 Bacon and Egg 2.45 Muffin 0.99 French Toast 1.99 Fruit Basket 2.49 Cereal 0.69 Coffee 0.50 Tea 0.75
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
