С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 23.09.2023
Сообщений: 4

Разработать класс Сумка с использованием контейнеров STL

23.09.2023, 18:02. Показов 619. Ответов 3
Метки #c++ (Все метки)

Студворк — интернет-сервис помощи студентам
"Сумка с пищевыми продуктами для доставки"

Разработать класс Сумка. В сумку можно класть продукты и забирать их из неё. У сумки есть максимально допустимая масса продуктов внутри и метод возврата текущей массы продуктов. Также должен быть метод, возвращающий количество продуктов в сумке. При помещении продукта в сумку температура всех продуктов меняется мгновенно в соответствии с законами физики. Добавьте метод, возвращающий количество продуктов в сумке, для которых был нарушен температурный режим (продукт испорчен). Добавьте метод, который возвращает количество продуктов в сумке, которые испортились бы при помещении заданных продуктов в сумку.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2023, 18:02
Ответы с готовыми решениями:

Разработать программу с использованием двух последовательных контейнеров STL и трех методов
Разработать программу на языке С++ с использованием двух последовательных контейнеров STL и трех методов. Буду очень благодарен)

Разработать программу с использованием трех алгоритмов stl
Нужно разработать программу на языке С++ с использованием трех алгоритмов STL. Буду очень признателен:)

Задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком
Решить задачу с использованием STL. Разработать шаблон класса для работы с односвязным списком. Тип элементов задается как параметр...

3
Заблокирован
23.09.2023, 20:55
Лучший ответ Сообщение было отмечено Elina_t как решение

Решение

Цитата Сообщение от Elina_t Посмотреть сообщение
При помещении продукта в сумку температура всех продуктов меняется мгновенно в соответствии с законами физики.
Молния на сумке тоже будет ломаться по законам физики ?

Тестируйте :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>
struct Product{
public :
   Product(double w, double t, double tup, double tdown) 
      : w{w}, tup{tup}, tdown{tdown} {
         set_t(t);
   }
   void set_t(double t){
      assert( (-273.15 <= t && t <= 2500.0) );
      this->t = t;
      expired = (tup < t) || (t < tdown);
   }
   bool is_expired() const{
      return expired;
   }
   double weight() const{
      return w;
   }
   double temperature() const{
      return t;
   }
private :
   double tup, tdown;
   double w, t;
   bool expired;
};
 
class Bag{
public :
   Bag(double capacity)
      : capacity{capacity}{
         assert(capacity >= 0.0);
   }
   double Put(Product p){
      if ( CanPut(p.weight()) ){
         goods.push_back(p);
         t = (w*t + p.weight()*p.temperature())/(w+p.weight());
         w += p.weight();
         std::for_each(goods.begin(), goods.end(), [temp = t](Product& p){
               p.set_t(temp);
            }
         );
      }
      return w;
   }
   Product Take(size_t index){
      assert(index < goods.size());
      Product out = goods[index];
      goods.erase(goods.begin() + index);
      w -= out.weight();
      return out;
   }
   std::size_t Count() const{
      return goods.size();
   }
   double Weight() const{
      return w;
   }
   double Capacity() const{
      return capacity;
   }
 
   std::size_t Expired(){
      return   std::count_if( goods.begin(), goods.end(), []( const Product &p ) {
                     return p.is_expired(); 
                  }
               );
   }
   std::size_t Test(std::vector<Product> left){
      double wleft{0.0};
      double nom{0.0}, denom{0.0};
      std::for_each(left.begin(), left.end(), [&wleft, &nom](const Product &p){
            wleft += p.weight();
            nom += p.weight() * p.temperature();
         }
      );
      if ( CanPut(wleft) ){
         double tall = (w*t + nom )/(w + wleft);
         left.insert(left.end(), goods.begin(), goods.end());
         std::for_each(goods.begin(), goods.end(), [temp = tall](Product& p){
               p.set_t(temp);
            }
         );
         return   std::count_if( goods.begin(), goods.end(), []( const Product &p ) {
                     return p.is_expired(); 
                     }
                  );
      }
      return 0;
   }
   bool CanPut(double weight){
      return capacity >= (w + weight);
   }
private:
   std::vector<Product> goods;
   std::vector<bool>    expired;
   const double capacity;
   double t{0.0};
   double w{0.0};
};
 
int main(){
   Bag bag(150);
}
1
0 / 0 / 0
Регистрация: 23.09.2023
Сообщений: 4
23.09.2023, 22:30  [ТС]
Спасибо
0
Заблокирован
23.09.2023, 22:51
Цитата Сообщение от SmallEvil Посмотреть сообщение
std::vector<bool>    expired;
Это ненужный артефакт, старая задумка.

Добавлено через 11 минут
И еще есть два некрасивых нюанса, на которые я положил прибор.
При добавлении продукта и тесте при добавлении группы продуктов, если Сумка не может вместить их, я тихо посылаю лесом и ничего не делаю.
То - есть, я оставил на вас решить что предпринять в таких случаях.
Оставлять так это дело нельзя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2023, 22:51
Помогаю со студенческими работами здесь

Разработать программу построения индекса записей в файле с использованием stl::map и QMap
Разработать программу построения индекса записей в файле с использованием stl::map и QMap. Минимально запись состоит из строки-имени,...

Таблица STL контейнеров
Привет. Есть у кого может такая таблица, как по этой ссылке? https://ru.cppreference.com/w/cpp/container хочу скачать и себе распечатать.

Сортировка STL контейнеров
Почему выдается ошибка &quot; request for member 'sort' in 'vec', which is of non-class type 'std :: pair&lt;int, std::vector&lt;int&gt; &gt; '&quot;...

Расширение stl контейнеров
Собственно сабж. Из идей: 1. class MyC { public: .... //reimplement stl func

Синхронизация контейнеров (STL)
Добрый день, задание следующее: 1) написать функцию которая принимает в качестве аргумента ссылку или указатель на вектор, заполняет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru