#include #include #include #include using namespace std; int main () { ////////////////////////////// // Set up variables to count // the number of dishes needed at each table int Table1beef = 0, Table1chicken = 0, Table1fish=0, Table1veggies=0, Table2beef = 0, Table2chicken = 0, Table2fish=0, Table2veggies=0, Table3beef = 0, Table3chicken = 0, Table3fish=0, Table3veggies=0, Table4beef = 0, Table4chicken = 0, Table4fish=0, Table4veggies=0; // string for the file name we will be using string input_file_name; ifstream datafile; // variable to hold input int table_num; string dish, name; ////////////////////////////// // Explain what the program does cout << endl << endl; cout << "Welcome to the SICK meal maker." << endl; cout << "This program will calculate the number of meals needed for" << endl; cout << "a particular wedding as specified in the file provided as input." << endl << endl; ////////////////////////////// // Get file name cout << "Please enter the name of the guest file to use: "; getline(cin,input_file_name); // open file if it is there datafile.open(input_file_name.c_str()); if (!datafile) { cerr << "Could not open file: "<< input_file_name << " for reading." << endl; exit(1); } ////////////////////////////// // If we made it this far, we have an open file // process lines from file // read the first line) datafile >> table_num >> dish; getline(datafile, name); while(datafile){ switch (table_num){ // table 1 case 1: switch(dish.at(0)){ // yummy beef case 'B': case 'b': Table1beef++; break; // cheaper chicken case 'c': case 'C': Table1chicken++; break; // healthy fish case 'f': case 'F': Table1fish++; break; // super healthy veggies case 'v': case 'V': Table1veggies++; break; default: cout << "Bad food item read. Quitting" << endl; exit(1); } break; case 2: // table 2 switch(dish.at(0)){ // yummy beef case 'B': case 'b': Table2beef++; break; // cheaper chicken case 'c': case 'C': Table2chicken++; break; // healthy fish case 'f': case 'F': Table2fish++; break; // super healthy veggies case 'v': case 'V': Table2veggies++; break; default: cout << "Bad food item read. Quitting" << endl; exit(1); } break; case 3: // table 3 switch(dish.at(0)){ // yummy beef case 'B': case 'b': Table3beef++; break; // cheaper chicken case 'c': case 'C': Table3chicken++; break; // healthy fish case 'f': case 'F': Table3fish++; break; // super healthy veggies case 'v': case 'V': Table3veggies++; break; default: cout << "Bad food item read. Quitting" << endl; exit(1); } break; case 4: // table 4 switch(dish.at(0)){ // yummy beef case 'B': case 'b': Table4beef++; break; // cheaper chicken case 'c': case 'C': Table4chicken++; break; // healthy fish case 'f': case 'F': Table4fish++; break; // super healthy veggies case 'v': case 'V': Table4veggies++; break; default: cout << "Bad food item read. Quitting" << endl; exit(1); } break; default: cout << "Read a bad table number. Quitting."<< endl; exit(1); } // read the next line of the file datafile >> table_num >> dish; getline(datafile, name); } // When we reach this point, the while loop must have stopped, so the // variables should hold what we need cout << endl << "Table 1:" << endl; cout << setw(8) << Table1beef << " beef" << endl; cout << setw(8) << Table1chicken << " chicken" << endl; cout << setw(8) << Table1fish << " fish" << endl; cout << setw(8) << Table1veggies << " veggie" << endl; cout << "Table 2:" << endl; cout << setw(8) << Table2beef << " beef" << endl; cout << setw(8) << Table2chicken << " chicken" << endl; cout << setw(8) << Table2fish << " fish" << endl; cout << setw(8) << Table2veggies << " veggie" << endl; cout << "Table 3:" << endl; cout << setw(8) << Table3beef << " beef" << endl; cout << setw(8) << Table3chicken << " chicken" << endl; cout << setw(8) << Table3fish << " fish" << endl; cout << setw(8) << Table3veggies << " veggie" << endl; cout << "Table 4:" << endl; cout << setw(8) << Table4beef << " beef" << endl; cout << setw(8) << Table4chicken << " chicken" << endl; cout << setw(8) << Table4fish << " fish" << endl; cout << setw(8) << Table4veggies << " veggie" << endl; return 0; }