Humanities
write a program in c++ to help manage inventory for a resturant. system will read in the list of ingredients for each dish, store ingredients list for each dish in a bit vector and perform data analytics on the information to help the resturant determine where it can make improvements. the program must provide the following functionality: -Allow the user to input the name of the file containing the list of dishes: -Do NOT hardcode the filename into your program. -The first line will be a comma delimited list containing the full list of ingredients the restaurant has on hand. -All other lines will have the name of the dish, followed by a colon, and then a comma delimited list of ingredients. -Your program should read in each dish and create an appropriate set object for the dish. -If a dish contains an ingredient that is not part of the full list of ingredients the restaurant has on hand, politely report this to the user and do not include the dish -Your int main() should be in its own .cpp file -The set class for a dish should be in its own .cpp file with an associated header file and contain at least: - A bit vector representation of the dish’s ingredients using Booleans. -Appropriate accessor and mutator (getter and setter) member functions to promote encapsulation. -Using appropriate set operations (i.e. Union, Intersection, etc…) you implement as functions, your program should calculate and output the following: -The set of all ingredients that are in one or more dishes in 0/1 format, where a 1 indicates an ingredient is a member of the set. -The set of all ingredients that are in more than one dish in 0/1 format, where a 1 indicates an ingredient is a member of the set. -The set of all ingredients that are in exactly one dish in 0/1 format, where a 1 indicates an ingredient is a member of the set. -The set of all ingredients that are in no dishes in 0/1 format, where a 1 indicates an ingredient is a member of the set. -These operations should be stored in a separate .cpp file as a library. -Remember that most set operations are binary (performed on two sets), so your set operation functions should never be performed on more than two sets at a time. You may need a temporary set to store information while you are working toward the final solution. -Manipulation and generation of resulting sets should only be performed using set operations -Your program should also output the 0/1 formatted set of the ingredients for each dish, where a 1 indicates an ingredient is a member of the set. Make sure the name of the dish is provided along with its associated ingredients. -Please do not use any of the set containers or set operations/algorithms provided by C or C++. such as: bitsets, sets, multisets, set_union, set_intersection, etc... ( As a separate program.... you will need to implement the set as a LinkedList, instead of a bit vector, where a node represents a single food item. This should be done as a separate program from your bit vector implementation. Additionally, you must write your own LinkedList class and associated operations, in addition to the bit vector implementation restrictions on STL usage.) Examples of input file to program: (will be a .txt file) beans,tomatoes,fish,eggs,milk,flour,sugar,yeast,cheese,salt,oil,onions,lemon cheese pizza:eggs,milk,flour,yeast,sugar,tomatoes,cheese baked fish:fish,lemon fried fish:fish,lemon,oil smoked fish:fish,smoke,lemon beans and fish:beans,fish,lemon Examples of output: The dish smoked fish contains smoke which is not something we have. Dish Name: beans tomatoes fish eggs milk flour sugar yeast cheese salt oil onions lemon cheese pizza: 0 1 0 1 1 1 1 1 1 0 0 0 0 baked fish: 0 0 1 0 0 0 0 0 0 0 0 0 1 fried fish: 0 0 1 0 0 0 0 0 0 0 1 0 1 beans and fish: