6 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 125
|
|
Вынесение общего множителя за скобки в выражении26.01.2014, 04:44. Показов 3215. Ответов 8
Метки нет Все метки)
(
Здравствуйте! Вот какая проблемка: нужно написать программку, которая выносит общий множитель за скобочки, я ввожу в TextBox арифметическое выражение, например: a*b+a*c, на выходе должно получиться a*(b+c),аналогично и с числовыми выражениями,но я ума не приложу как вообще это реализовать,с чего начинать?? Подсобите неопытному программисту....
0
|
26.01.2014, 04:44 | |
Ответы с готовыми решениями:
8
Вынесение общего элемента из выражения Раскрыть скобки в выражении Раскрыть скобки в выражении |
814 / 422 / 169
Регистрация: 08.02.2013
Сообщений: 711
|
|
26.01.2014, 07:21 | |
Nastya12, Вам, наверное, в раздел алгоритмы нужно. Могу предложить очень простой вариант, для операций + и *:
1. разобрать скобочное выражение любым удобным способом 2. раскрыть скобки и получить многочлен суммы произведений: ΣiПjaji 3. вычислить все числовые суммы 4. разложить все числовые множители на произведение простых чисел 5. брать группы в сумме и выносить одинаковые множители за скобки 6. Повторять для новых сумм Однозначно, какое-то упрощение вы получите, но не оптимальное. Для последнего необходимо уточнить задачу, т.к. определения "простоты" выражения не существет, если это учебное задание, лучше решить его для каких-то частных вариантов, выражений особых видов или операций упрощения, например, пусть алгоритм ищет полный квадрат итд.. Если сформулируете подобную конкретную задачу, думаю, здесь точно кто-то поможет с решением.
1
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|
26.01.2014, 09:16 | |
Если хотите сделать самостоятельно, то с теории. Пишете парсер, разбираете через него формулу в синтаксическое дерево, преобразуете дерево по своим правилам (выносит общий множитель за скобочки), выводите результат. Ключевые слова для изучения
http://ru.wikipedia.org/wiki/%... 0%B8%D0%B7 http://ru.wikipedia.org/wiki/%... 0%B2%D0%BE http://en.wikipedia.org/wiki/Graph_rewriting
2
|
foo();
![]() |
||||||
26.01.2014, 12:25 | ||||||
Nastya12, условие : строка вида "a + b", где а и b - целые числа
1
|
03.03.2016, 00:29 | |
вот с этим моментом у меня сейчас и проблема
вот моя тема В моей модели каждый нетерминал - интерфейс. Каждая правая часть продукций - реализация соответствующего интерфейса, которая аггрегирует элементы(терминалы(значения) и/или нетерминалы(указатели на интерфейсы)) правой части. Можно ли пример самый простой но по существу реализаций такого преобразования. Хотя бы с раскрытием скобок.
0
|
Master of Orion
![]() ![]() |
|
03.03.2016, 00:38 | |
Qazan, вам нужно просто дерево построить. Самый простой вариант - рекурсивный. Ищем оператор с наименьшим приоритетом, это корень дерева, после этого рекурсивно повторяем для текста слева и справа от этого оператора. Дальше применяем правила упрощения, если есть два одинаковых потомка и у них есть один общий операнд, то его можно вынести наверх. Таким образом +*ab*ac => *a+bc
0
|
03.03.2016, 01:24 | ||||||
Psilon,
не уверен, что все понял. У меня уже строиться синтаксическое дерево. В каждой ноде создается объект по такому принципу:
Из под самих объектов или это нужно как то внешне делать ?
0
|
![]() ![]() ![]() |
||||||
03.03.2016, 02:00 | ||||||
Qazan, Раскрытие скобок:
1
|
6 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 125
|
|
09.04.2016, 02:01 [ТС] | |
Ребят, все сделано, спасибо за участие, забыла отписать год назад
![]()
0
|
09.04.2016, 02:01 | ||||||
Помогаю со студенческими работами здесь
9
Расставить скобки в арифметическом выражении Раскрыть скобки в алгебраическом выражении. Знак скобки ( в регулярном выражении Как экранировать скобки в регулярном выражении Правильно ли расставлены скобки в алгебраическом выражении Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть.
Дело в том, что я. . .
|
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
|
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
|
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
|
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
|
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
|
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
|
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
|
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
|
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|