using System.Collections.Generic;
using System.Threading.Tasks;
private string technique;
public Dough(string flour, string technique, double weight)
if (value.ToLower() != "white" && value.ToLower() != "wholegrain")
throw new ArgumentException("Invalid type of dough!");
if (value.ToLower() != "cripsy" &&
value.ToLower() != "chewy" &&
value.ToLower() != "homemade")
throw new ArgumentException("Invalid type of dough!");
if (value < 1 || value > 200)
throw new ArgumentException("Dough weight should be in the range [1...200].");
double flourModifier = 0.0;
double techniqueModifier = 0.0;
switch (Technique.ToLower())
return (2 * Weight * flourModifier * techniqueModifier);
private string toppingType;
public Topping(string toppingType, double weigth)
ToppingType = toppingType;
private string ToppingType
if (value.ToLower() != "meat" && value.ToLower() != "veggies" &&
value.ToLower() != "cheese" && value.ToLower() != "sauce")
throw new ArgumentException(string.Format("Cannot place {0} on top of your pizza.", value));
if (value < 1 || value > 50)
throw new ArgumentException(string.Format("{0} weight should be in the range [1...50].", toppingType));
double toppingTypeModifier = 0.0;
switch (ToppingType.ToLower())
toppingTypeModifier = 1.2;
toppingTypeModifier = 0.8;
toppingTypeModifier = 1.1;
toppingTypeModifier = 0.9;
return (2 * Weigth * toppingTypeModifier);
public Pizza(string name, int numbTopping)
NumbTopping = numbTopping;
Toppings = new List<Topping>();
if (value.Length < 1 || value.Length > 15)
throw new ArgumentException("Pizza name should be between 1 and 15 symbols.");
public double Calories { get; set; }
if (value < 0 || value > 10)
throw new ArgumentException("Number of toppings should be in range [0...10].");
public List<Topping> Toppings { get; set; }
public Dough Dough { get; set; }
public double TotalCalories()
return this.Dough.Calories() + this.Toppings.Sum(t => t.Calories());
public static void Main()
string order = Console.ReadLine();
string[] input = order.Split();
var dough = new Dough(input[1], input[2], double.Parse(input[3]));
Console.WriteLine("{0:F2}", dough.Calories());
Console.WriteLine(fe.Message);
else if (input[0] == "Topping")
var topping = new Topping(input[1], double.Parse(input[2]));
pizza.Toppings.Add(topping);
Console.WriteLine("{0:F2}", topping.Calories());
Console.WriteLine(fe.Message);
else if (input[0] == "Pizza")
string pizzaName = input[1];
int numbTopping = int.Parse(input[2]);
pizza = new Pizza(pizzaName, numbTopping);
Console.WriteLine(fe.Message);
order = Console.ReadLine();
Console.WriteLine("\n{0} –> {1:F2} calories.", pizza.Name, pizza.TotalCalories());