Facebook
From Hot Prairie Dog, 1 Year ago, written in C++.
Embed
Download Paste or View Raw
Hits: 109
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <string>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. class Tovar
  9. {
  10.   public:
  11.     Tovar(const string& name, const string& shop, double prices[])
  12.     {
  13.         SetName(name);
  14.         SetShop(shop);
  15.  
  16.         for (int i = 0; i < 6; i++)
  17.         {
  18.             prices_[i] = prices[i];
  19.         }
  20.     }
  21.  
  22.     void SetName(const string& name)
  23.     {
  24.         name_ = name;
  25.     }
  26.  
  27.     const string& GetName() const
  28.     {
  29.         return name_;
  30.     }
  31.  
  32.     void SetShop(const string& shop)
  33.     {
  34.         shop_ = shop;
  35.     }
  36.  
  37.     const string& GetShop() const
  38.     {
  39.         return shop_;
  40.     }
  41.  
  42.     void SetPrices(const vector<double>& prices)
  43.     {
  44.         for (int i = 0; i < 6 && i < prices.size(); i++)
  45.         {
  46.             prices_[i] = prices[i];
  47.         }
  48.     }
  49.  
  50.     vector<double> GetPrices() const
  51.     {
  52.         vector<double> result;
  53.         for (int i = 0; i < 6; i++)
  54.         {
  55.             result.push_back(prices_[i]);
  56.         }
  57.  
  58.         return result;
  59.     }
  60.  
  61.     bool operator < (const Tovar& other)
  62.     {
  63.         return name_ < other.name_;
  64.     }
  65.  
  66.     double AveragePrice() const
  67.     {
  68.         double summ = 0;
  69.         for (int i = 0; i < 6; i++)
  70.         {
  71.             summ += prices_[i];
  72.         }
  73.         return summ / 6;
  74.     }
  75.  
  76.     void Print() const
  77.     {
  78.         cout << "Название: " << name_ << "\n"
  79.              << "Магазин: " << shop_ << "\n"
  80.              << "Средняя цена: " << AveragePrice() << "\n"
  81.              << "Цены: ";
  82.  
  83.         for (int i = 0; i < 6; i++)
  84.         {
  85.             cout << prices_[i] << ", ";
  86.         }
  87.         cout << "\b\b\n";
  88.     }
  89.  
  90.   private:
  91.     string name_;
  92.     string shop_;
  93.     double prices_[6];
  94. };
  95.  
  96. void PrintByShop(const vector<Tovar>& tovars, const string& shop)
  97. {
  98.     for (int i = 0; i < tovars.size(); i++)
  99.     {
  100.         if (tovars[i].GetShop() == shop)
  101.         {
  102.             tovars[i].Print();
  103.             cout << "\n";
  104.         }
  105.     }
  106. }
  107.  
  108. Tovar InputTovar()
  109. {
  110.     string name, shop;
  111.     double prices[6];
  112.  
  113.     cout << "Введите название\n";
  114.     cin >> name;
  115.  
  116.     cout << "Введите магазин\n";
  117.     cin >> shop;
  118.  
  119.     cout << "Введите цены\n";
  120.     for (int i = 0; i < 6; i++)
  121.     {
  122.         cin >> prices[i];
  123.     }
  124.  
  125.     Tovar tovar(name, shop, prices);
  126.  
  127.     return tovar;
  128. }
  129.  
  130. void PrintTovars(const vector<Tovar>& tovars)
  131. {
  132.     for (int i = 0; i < tovars.size(); i++)
  133.     {
  134.         tovars[i].Print();
  135.         cout << "\n";
  136.     }
  137. }
  138.  
  139. int main()
  140. {
  141.     vector<Tovar> tovars;
  142.  
  143.     cout << "Введите список товаров\n";
  144.     bool finished = false;
  145.     while (!finished)
  146.     {
  147.         int action;
  148.         cout << "Выберите действие:\n"
  149.                 "1) Добавить товар\n"
  150.                 "2) Закончить ввод\n";
  151.         cin >> action;
  152.         switch (action)
  153.         {
  154.           case 1:
  155.             tovars.push_back(InputTovar());
  156.             break;
  157.           case 2:
  158.             finished = true;
  159.             break;
  160.           default:
  161.             cout << "Вы выбрали несуществующее действие, попробуйте ещё раз\n";
  162.             continue;
  163.         }
  164.     }
  165.  
  166.     sort(tovars.begin(), tovars.end());
  167.  
  168.     finished = false;
  169.     while (!finished)
  170.     {
  171.         cout << "Выберите действие: \n"
  172.                 "0) Выйти\n"
  173.                 "1) Поиск по названию магазина\n"
  174.                 "2) Вывести товары, отсортированные по названию\n";
  175.         int action;
  176.         cin >> action;
  177.         switch (action)
  178.         {
  179.           case 0:
  180.             finished = true;
  181.             break;
  182.           case 1:
  183.           {
  184.             cout << "Введите название магазина\n";
  185.             string shop;
  186.             cin >> shop;
  187.             PrintByShop(tovars, shop);
  188.             break;
  189.           }
  190.           case 2:
  191.             PrintTovars(tovars);
  192.             break;
  193.           default:
  194.             cout << "Вы выбрали несуществующее действие, попробуйте ещё раз\n";
  195.             continue;
  196.         }
  197.     }
  198.  
  199.     return 0;
  200. }
  201.