|
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 10
|
||||||
Разбор математических выражений24.10.2010, 09:31. Показов 5428. Ответов 5
Метки нет (Все метки)
Добрый день, нуждаюсь в вашей помощи. Написал код программы для решения определённого уравнения методом половинного деления. Необходимо доработать код, чтобы можно было вводить и само уравнение с клавиатуры.
Задание (В данной работе необходимо учесть, что программа должна подходить для решения не только приведенного в условии задачи уравнения и заданных для него интервалов, но для других уравнений данного класса. Для отладки рекомендуется использовать квадратное уравнение, корни которого определены аналитическим способом.)
0
|
||||||
| 24.10.2010, 09:31 | |
|
Ответы с готовыми решениями:
5
Написать парсер математических выражений с функцией упрощения этих выражений Разбор двух математических уравнений Парсер математических выражений |
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||
| 24.10.2010, 09:50 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 10
|
||
| 24.10.2010, 10:00 [ТС] | ||
|
Спасибо за столь грамотный ответ и поправки моих косяков, данное задание написано ниже и пример самого уравнения, если вы не заметили. Обратился на форум, потому что сам не представляю как это сделать.
0
|
||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 24.10.2010, 11:06 | |
|
Предлагаю через суффиксную нотацию:
1. Считаем элементы исходного выражения, за исключением скобок. В выражении: (2*x^2+1)+x^2-4 элементами будут: 2, *, x, ^, 2, +, 1, +, x, ^, 2, - 4. Всего 13. 2. Создаём массив элементов такого размера. 3. Заполняем его в прямом порядке: 2, *, x, ^, 2, +, 1, +, x, ^, 2, - 4. 4. С операторами ассоциируем базовые приоритеты: 2, *, x, ^, 2, +, 1, +, x, ^, 2, - 4. 2 3 1 1 3 1 5. После каждой открывающейся скобки повышаем приоритеты на 3 до следующей закрывающей: 2, *, x, ^, 2, +, 1, +, x, ^, 2, - 4. 5 6 4 1 3 1 6. Все операторы проталкиваем вперёд на 1 шаг: 2, x, *, 2, ^, 1, +, x, +, 2, ^, 4, - 5 6 4 1 3 1 7. В цикле по операторам от первого до предпоследнего проталкиваем каждый оператор, находящийся перед оператором с большим приоритетом вперёд, пока следующий за ним не будет иметь меньший приоритет: 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - 6 5 4 3 1 1 8. Готово. Теперь расчёт. Пусть x=3, Понадобится стек, сначала он пуст. Красным крашу до текущей позиции. 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - константу в стек: 2 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - значение переменной в стек: 2 3 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - константу в стек: 2 3 2 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - извлекаем два элемента, возводим один в степень другого и результат помещаем в стек: 2 9 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - извлекаем два элемента и помещаем в стек их произведение: 18 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - константу в стек: 18 1 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - извлекаем два элемента и сумму помещаем в стек: 19 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - значение переменой в стек: 19 3 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - константу в стек: 19 3 2 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - извлекаем два элемента, возводим один в степень второго, результат помещаем в стек: 19 9 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - извлекаем два элемента, их сумму помещаем в стек: 28 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - константу в стек: 28 4 2, x, 2, ^,*, 1, +, x, 2, ^, +, 4, - извлекаем два элемента, вычитаем один из другого, результат помещаем в стек: 24 Достигнут конец выражения, извлекаем элемент стека и возвращаем в качестве значения выражения.
1
|
|
|
0 / 0 / 0
Регистрация: 24.10.2010
Сообщений: 10
|
|||
| 24.10.2010, 14:44 [ТС] | |||
|
Cпасибо большое, попробую воспроизвести на С++
Добавлено через 17 минут (( придётся повозиться.Добавлено через 44 минуты ![]() Добавлено через 2 часа 25 минут Ну подскажите ещё кто-нибудь.
0
|
|||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
| 25.10.2010, 06:43 | ||||||
|
Ещё можно рекурсивно через дерево подвыражений:
выражение (2*x^2+1)+x^2-4 есть сумма подвыражений: 2*x^2+1 и x^2-4 подвыражение 2*x^2+1 есть сумма подвыражений 2*x^2 и 1 подвыражение x^2-4 есть разность подвыражений x^2 и 4 подвыражение 2*x^2 есть произведение подвыражений 2 и x^2, подвыражение 1 есть отдельный элемент подвыражение x^2 есть подвыражение x в степени подвыражения 2 подвыражение 4 есть отдельный член подвыражение x есть отдельный член. Читай "Теорию и практику C++" Герберта Шилдта. Но по-моему этот способ сложней формализовать для машины, хотя вручную большинство именно так и делает. Добавлено через 1 час 11 минут
1
|
||||||
| 25.10.2010, 06:43 | |
|
Помогаю со студенческими работами здесь
6
Вычисление математических выражений Вычисления математических выражений
Анализатор математических выражений Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
. . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 11.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 10.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|