6 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 125
|
|
Вынесение общего множителя за скобки в выражении26.01.2014, 04:44. Показов 3204. Ответов 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
Расставить скобки в арифметическом выражении Раскрыть скобки в алгебраическом выражении. Знак скобки ( в регулярном выражении Как экранировать скобки в регулярном выражении Правильно ли расставлены скобки в алгебраическом выражении Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели.
Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
|
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка:
«Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
|
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
|
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
|
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
|
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
|
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
|
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
|
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
|