(5/5)

# Have you ever noticed how difficult it is to organize ordering pizza for a large group?

INSTRUCTIONS TO CANDIDATES

Background:

Have you ever noticed how difficult it is to organize ordering pizza for a large group?

Just to be clear: the answer is ‘yes’. Doesn’t matter if it makes sense; we’re going with ‘yes’

Shelly likes a classic pepperoni and cheese on red sauce. Marshall likes olives and artichokes on white. Gary just likes red and white sauce with nothing else on. We… don’t invite Marshall to our pizza parties anymore.

The more people you’re ordering for, the more you have to compromise. e.g. if Allen wants a classic Hawaiian (ham, pineapple, and cherries), and Brenda wants a more local variant (bacon and pineapple), then clearly the solution is to take the intersection of the two: nothing but pineapple!

(Yes yes, probably sauce and cheese also, but the point is: pineapple is great and everyone loves it)

Pizza:

To assist with this, we could devise a new data type: a Pizza.

To be clear, a Pizza in this context isn’t the pizza itself, but rather a configuration of toppings.

There are 20 possible toppings (including sauces and cheeses)

o The options are all defined in an unscoped enumeration

o Each topping is either present, or not (e.g. you can’t get ‘double bacon’)

Since a Pizza is really just ‘one possible configuration’, the type is immutable. If you want a different configuration, simply use one of the included operators to create new derived configuration

o e.g. if p1 is [Red sauce | Pepperoni], then p2=p1+OLIVES; means p2 ends up with [Red sauce | Pepperoni | Olives], but p1 remains unchanged

Pizza Operators:

Operator C++ [returns]

Union of toppings present in either pizza A+B [Pizza]

Intersection of only toppings common to both pizzas A^B [Pizza]

Result of removing toppings defined by a different pizza A-B [Pizza]

Result of adding a single topping to the pizza A+b [Pizza]

Result of leaving a single topping off the pizza A-b [Pizza]

Checking if a pizza’s toppings are contained entirely within another’s A<=B [bool]

Checking if second pizza’s topping are a strict superset of this one’s A<B [bool]

Checking if a pizza has at least all the same toppings as another A>=B [bool]

Checking if a pizza has the same toppings as another, plus at least one more A>B [bool]

Checking if two pizzas have identical toppings A==B [bool]

Checking if two pizzas are different A!=B [bool]

Checking if a pizza has no toppings at all !A [bool]

Getting the number of toppings on the pizza A() [int]

Checking if a specific topping is present A[t] [bool]

Stream insertion (output) O<<A [ostream]

There are also two static functions for presets: one that yields the configuration of all possible toppings, and one that’s just for solely the meats (i.e. not even sauce or cheese).

You’ve been provided with a header file. Do not modify it.

You’ll be writing two files:

Pizza.cpp – containing the complete implementation, relying on Pizza.h

A simple program to demonstrate all of the operations

The output (stream insertion) uses the following format:

Starts with [ and ends with ]

Each topping is listed in plain English

o Each topping is separated by a |

o There is no | before the first topping, or after the last one

o An ‘empty’ pizza has no | at all

e.g. [Pepperoni] []

[Red sauce | White sauce | Mozzarella | Feta | Pepperoni | Green pepper | Red pepper | Banana pepper | Black pepper | Sausage | Bacon | Pineapple | Corn | Artichoke | Toes | Mushrooms | Onions | Ham | Olives | Cherries]

If you’re still having issues by then, we’ll cover a couple tips during lecture.

(5/5)

## Related Questions

##### . Introgramming & Unix Fall 2018, CRN 44882, Oakland University Homework Assignment 6 - Using Arrays and Functions in C

DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma

##### . The standard path finding involves finding the (shortest) path from an origin to a destination, typically on a map. This is an

Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t

##### . Develop a program to emulate a purchase transaction at a retail store. This program will have two classes, a LineItem class and a Transaction class. The LineItem class will represent an individual

Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th

##### . SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define:

1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of

##### . Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define:

1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of

Hire Me

Hire Me