Is there any way to solve it?
#include
#include
#include
using namespace std;
#define MAXTOPPING 10
class PizzaOrder
{
public:
static const string toppings_offered[MAXTOPPING];
double static const topping_base_cost;
double static const base_price;
static const int DEFAULTSIZE = 0;
private:
int size;
string toppings[MAXTOPPING];
int num_topping;
public:
PizzaOrder();
PizzaOrder(int size);
bool SetSize(int size);
int GetSize() {return size;}
bool AddTopping(string topping);
bool AddTopping(int n);
double GetPrice();
string StringizeSize();
string GetToppings();
void DisplayPizza();
};
const string PizzaOrder::toppings_offered[MAXTOPPING] =
{
"onions", "bell peppers", "olives", "pepperoni"
};
double const PizzaOrder::topping_base_cost = 1.25;
double const PizzaOrder::base_price = 10;
int main()
{
string getsize;
int pizzasize, gettopping;
PizzaOrder Order;
while (true)
{
cout << "Welcome to LULU PIZZA!!n";
cout << "Please select the size or enter Q to quit:n";
cout << "Enter S for small.n";
cout << "Enter M for medium.n";
cout << "Enter L for large.n";
cin >> getsize;
if ( getsize[0] == 'Q' || getsize[0] == 'q')
break;
else if ( getsize[0] == 's' || getsize[0] == 'S')
pizzasize = 0;
else if ( getsize[0] == 'm' || getsize[0] == 'M')
pizzasize = 1;
else if ( getsize[0] == 'l' || getsize[0] == 'L')
pizzasize = 2;
Order.SetSize(pizzasize);
while(true)
{
cout << "You have chosen :n";
Order.DisplayPizza();
cout << "Select your toppings by number (0 when done)n";
cout << " 1. Onionsn";
cout << " 2. Bell Peppern";
cout << " 3. Pepperonin";
cout << " 4. Olivesn";
cin >> gettopping;
if ( gettopping != 0 && gettopping != 1 && gettopping != 2 )
{
cout << "Cannot read!!! Please enter 0,1,2,3,4 n";
continue;
}
else if ( gettopping = 0 )
{
cout << "Thank you!n";
break;
}
else
{
Order.AddTopping(PizzaOrder::toppings_offered[gettopping - 1]);
cout << "You chose : " << gettopping <}
}
cout <<" Size of next pizza or quit?";
}
cout << "Thank for shopping at LULU PIZZA";
return 0;
}
bool PizzaOrder::SetSize(int size)
{
if ( size != 0 && size != 1 && size != 2)
return false;
this -> size = size;
return true;
}
bool PizzaOrder::AddTopping(int n)
{
this -> toppings [this -> num_topping] = toppings_offered[n];
num_topping++;
if ( num_topping < MAXTOPPING )
return true;
return false;
}
bool PizzaOrder::AddTopping(string topping)
{
this-> toppings[ this-> num_topping ] = topping;
this -> num_topping++;
if ( num_topping < MAXTOPPING )
return true;
return false;
}
PizzaOrder::PizzaOrder()
{
size = DEFAULTSIZE;
}
PizzaOrder::PizzaOrder( int size )
{
if( !SetSize(size) )
size = DEFAULTSIZE;
}
double PizzaOrder::GetPrice()
{
double total_toppingprice, total_price;
total_toppingprice = num_topping * topping_base_cost;
if ( size == 0 )
{
total_price = total_toppingprice + base_price;
}
else if ( size == 1 )
{
total_price = total_toppingprice + base_price;
total_price = total_price * 1.15;
}
else if ( size == 2 )
{
total_price = total_toppingprice + base_price;
total_price = total_price * 1.25;
}
return total_price;
}
string PizzaOrder::StringizeSize()
{
string sizestring;
if ( size == 0 )
sizestring = "small";
else if ( size == 1)
sizestring = "medium";
else if ( size == 2)
sizestring = "large";
return sizestring;
}
string PizzaOrder::GetToppings()
{
int k;
string alltopping;
for ( k = 0; k < num_topping ; k++ )
alltopping = " + " + this -> toppings[k];
return alltopping;
}
void PizzaOrder::DisplayPizza()
{
string info;
info = this -> PizzaOrder::StringizeSize() + PizzaOrder::GetToppings();
cout << info << endl << endl;
}