Question: I am attempting to revise this program to allow for multiple selections of a specific type, essentially the program serves to make selections from a
I am attempting to revise this program to allow for multiple selections of a specific type, essentially the program serves to make selections from a restaurant menu and then displays the total, but currently you can only select ONE of each item and I would like the ability to select MULTIPLE of each item.
Here is what I currently have
#include#include #include #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_Ex5Data.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 itemNo; char response; cListLength = 0; cout << "You can make up to " << listSize << " different 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; }
This is the contents of the data file ("Ch9_Ex5Data.txt")
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
This is a sample output of what we're trying to accomplish
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
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
