Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
-7 / 0 / 0
Регистрация: 04.05.2024
Сообщений: 13

Декоратор (Универсальный химический обогатитель)

10.10.2024, 05:34. Показов 604. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, написать программный код на C# к следующей задаче:
ТЕКСТ ЗАДАЧИ
Универсальный химический обогатитель вопреки всем законам физики и химии способен создавать стабильные вещества из молекул различных элементов.
Суть его работы крайне проста, на вход подаётся базовое вещество, которое представляет собой некоторое число молекул (например, H2O – две молекулы водорода и одна молекула кислорода). Далее вещество проходит через различные фильтры и на выходе вы получаете новое вещество.
Вы разрабатываете приложение для обогатителя (на основе паттерна Декоратор). Для описания исходного вещества вы используете не химическую формулу, а строку, которая представляет собой набор латинских символов с описанием элементов. Например: H2O будет записано как «H H O», а C2H5OH как «C C H H H H H O H».
При этом каждое исходное вещество является отдельным классом, например для воды и перекиси водорода нужно будет создавать отдельные классы.
Нужно разработать несколько фильтров:
1) «Кислородный фильтр», который будет добавлять молекулу кислорода, то есть строка «H H O» после этого фильтра примет вид «H H O O».
2) «Водородный фильтр», который будет добавлять молекулу водорода, то есть строка «H H O» после этого фильтра примет вид «H H O H».
Решение должно позволять добавлять новые фильтры, кроме того должно позволять различные виды исходного вещества и комбинации фильтров.
Дополнительная задача №1
Разработать специальный фильтр, который «убирает» весь кислород из вещества.
Дополнительная задача №2
Разработать справочник (например, массив) с ценами за молекулу каждого вещества. Доработать решение так, чтобы оно позволяло считать итоговую стоимость вещества.
Дополнительная задача №3
Доработать решение так, чтобы итоговая формула полученного вещества была приведена к «нормальной форме». То есть, например, «C C H H H H H O H» преобразуется в «С2 H5 O H».
Дополнительная задача №4
Разработать специальный фильтр, который преобразует вещество следующим образом: вычисляется среднее число молекул в веществе. После чего преобразуется в вещество, в котором количество каждой из молекул, будет равно округлённому до целого среднему числу.
Например, «C C H H H H H O H» - всего 9 молекул, разных по 3, среднее 3. Поэтому после фильтрации будет «C C C H H H O O O».
Дополнительная задача №5
Разработать фильтр «Выделитель воды», то есть выделяет всю воду («H H O») из вещества, после чего возвращает вещество без воды.
Дополнительная задача №6
Разработать фильтр «Максимизатор». Этот фильтр находит те молекулы, которых больше всего в веществе и выделяет только эти молекулы.
Дополнительная задача №7
Разработать справочник (например, массив) с ценами за молекулу каждого вещества. Разработать фильтр «Минимизатор». Этот фильтр находит самые дорогие молекулы (по итоговой стоимости) и удаляет их из вещества.

Я ничего не понимаю в объектно-ориентированном программировании вообще.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2024, 05:34
Ответы с готовыми решениями:

Написать простой декоратор, используя декоратор wraps, для передачи данных от оригинальной функции
На python Написать простой декоратор, используя декоратор wraps, для передачи данных от оригинальной функции. Реализовать простую функцию...

Обогатитель в Hill climb racing
Люблю я играть в Hill climb racing. Недавно за один обеденный перерыв собрал ... робота для собирания монеток. Из спичек и желудей. Кода...

Универсальный указатель или универсальный скалярный тип
Здравствуйте! Помогите, пожалуйста написать программу: требуется написать универсальный скалярный тип данных без использования шаблонов....

6
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 968
10.10.2024, 07:41
Цитата Сообщение от math_and_it03 Посмотреть сообщение
Я ничего не понимаю в объектно-ориентированном программировании вообще.
так скорее всего и не поймешь. если делать только то что умеешь никогда новому не научишься. попробуй в коде написать хоть что-то, а потом проси помощи. хотя бы названия нужных для решения классов и методов внутри них уже будет прогрес.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
10.10.2024, 17:52
Цитата Сообщение от math_and_it03 Посмотреть сообщение
H2O – две молекулы водорода и одна молекула кислорода
- автору задания нужно по химии поставить жирную двойку. Не две молекулы, а два атома водорода. И не одна молекула кислорода, а один атом. Есть ли смысл решать задачу, автор которой лезет в предметную область, не обладая в ней даже школьными знаниями?..
2
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,607
Записей в блоге: 3
10.10.2024, 18:14
Catstail, еще с утра хотел про это сказать, но не стал: для ТСа это пустой звук, судя по всему.
А касательно самой задачи, так химию можно сюда вообще не приплетать, а рассматривать суть задания как работу с обычными строками.. Буква "С" стоит 10 руб, "Н" - 25.. и т.п.
2
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
11.10.2024, 01:15

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
- автору задания нужно по химии поставить жирную двойку. Не две молекулы, а два атома водорода. И не одна молекула кислорода, а один атом. Есть ли смысл решать задачу, автор которой лезет в предметную область, не обладая в ней даже школьными знаниями?..
Не смертельно. Учитывая что это просто для наглядности, можно смело забить. Как будто никогда в жизни не называли цифрой то что по факту является числом, от этого же хуже математику знать не стали.



Цитата Сообщение от wizard41 Посмотреть сообщение
А касательно самой задачи
тут больше "проблема" что всё нужно подогнать под патерн декоратор. Т.е. просто насоздавать классов, которые будуть что-то там делать нельзя, а нужно именно навести красоту в виде фильтра, его явной реализации, декоратора фильтра, и конкретной реализации декоратора.

В идеале бы ещё иметь пояснение "почему так", мне лично этот патерн не шибко понятный в применении.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38180 / 21115 / 4307
Регистрация: 12.02.2012
Сообщений: 34,724
Записей в блоге: 14
11.10.2024, 06:47
Цитата Сообщение от Wolfdp Посмотреть сообщение
Как будто никогда в жизни не называли цифрой то что по факту является числом, от этого же хуже математику знать не стали.
- да-да... Это то же самое. Путать цифру с числом, молекулу с атомом, Гоголя с Гегелем, Будапешт с Бухарестом свойственно людям малограмотным.

Но раз уж я ввязался в эту дискуссию, то обещаю решить собственно задачу (т.е. реализовать необходимые классы) в предстоящие выходные. Сейчас мне некогда.
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3419 / 2738 / 575
Регистрация: 04.09.2018
Сообщений: 8,607
Записей в блоге: 3
11.10.2024, 07:28
Цитата Сообщение от Wolfdp Посмотреть сообщение
тут больше "проблема" что всё нужно подогнать под патерн декоратор
ну по мне так вроде кажется логичным - декоратор. Все эти "доп" фильтры в качестве дополнительного функционала к основному классу подключать..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.10.2024, 07:28
Помогаю со студенческими работами здесь

Химический калькулятор
Помогите пожалуйста с кодом. Нужно сделать химический калькулятор для расчета молярной массы элемента. Добавлено через 34 минуты ...

Химический калькулятор
Помогите пожалуйста с кодом. Нужно сделать химический калькулятор для расчета молярной массы элемента.

Химический калькулятор
Прошу помощи в написании этой программы!!! Может быть у кого исходник имеется?

химический раствор
В химическом растворе имеется А атомов кислорода. В атомов водорода и С атомов серы. Сколько молекул серной кислоты H2SO4 может получится...

Проект в компасе химический
Всем привет. Киньте, пожалуйста, похожий проект на этот, что на картинке, буду благодарен...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru