diff options
sem 12
2 files changed, 81 insertions, 0 deletions
| -rw-r--r-- | Sem. 12/task1/Bar/Bar.cpp | 45 | ||||
| -rw-r--r-- | Sem. 12/task1/Bar/Bar.h | 36 |
diff --git a/Sem. 12/task1/Bar/Bar.cpp b/Sem. 12/task1/Bar/Bar.cpp new file mode 100644 index 0000000..e702d15 --- /dev/null +++ b/Sem. 12/task1/Bar/Bar.cpp @@ -0,0 +1,45 @@ +#include "Bar.h" + +void Bar::addDrink(const char* name, int ml) +{ + drinks.enqueue(Drink(name, ml)); +} +void Bar::addAlocoholDrink(const char* name, int ml, int alcohol) +{ + alcoholDrinks.enqueue(AlcoholDrink(name, ml, alcohol)); +} + +Drink Bar::getDrink() +{ + Drink d = drinks.dequeue(); + incrementStatistics(d); + return d; +} +AlcoholDrink Bar::getAcloholDrink() +{ + AlcoholDrink d = alcoholDrinks.dequeue(); + incrementStatistics(d, true); + return d; +} + +void Bar::incrementStatistics(const Drink& dr, bool isAlcoholDrink) +{ + stats.mlSold += dr.getMl(); + stats.allDrinksSold++; + + if (isAlcoholDrink) + stats.alcoholDrinksSold++; +} + +size_t Bar::getMlSold() +{ + return stats.mlSold; +} +size_t Bar::getAllDrinksSold() +{ + return stats.allDrinksSold; +} +size_t Bar::getAlcoholDrinksSold() +{ + return stats.alcoholDrinksSold; +}
\ No newline at end of file diff --git a/Sem. 12/task1/Bar/Bar.h b/Sem. 12/task1/Bar/Bar.h new file mode 100644 index 0000000..8a1750a --- /dev/null +++ b/Sem. 12/task1/Bar/Bar.h @@ -0,0 +1,36 @@ +#pragma once +#include <iostream> +#include "../Drinks/AlcoholDrink.h" +#include "../Queue/Queue.hpp" + + + +class Bar +{ + struct Statistics + { + size_t mlSold = 0; + size_t allDrinksSold = 0; + size_t alcoholDrinksSold = 0; + }; + +private: + Queue<Drink> drinks; + Queue<AlcoholDrink> alcoholDrinks; + + Statistics stats; + + void incrementStatistics(const Drink& dr, bool isAlcoholDrink = false); + +public: + + void addDrink(const char* name, int ml); + void addAlocoholDrink(const char* name, int ml, int alcohol); + + Drink getDrink(); + AlcoholDrink getAcloholDrink(); + + size_t getMlSold(); + size_t getAllDrinksSold(); + size_t getAlcoholDrinksSold(); +};
\ No newline at end of file |
