Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
anton9017
1 / 1 / 2
Регистрация: 23.06.2010
Сообщений: 95
1

Вычисление формул

28.07.2010, 11:31. Просмотров 2956. Ответов 27
Метки нет (Все метки)

Дана строка. В строке записана формула.
Подскажите, Самый простой способ вычисления формул.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.07.2010, 11:31
Ответы с готовыми решениями:

Доказательства формул и теорем
На самом деле эта теме косвенно относится к алгоритмам. В школе я успевал по математике, хорошо...

Расчет формул, синтаксический анализатор
Как написать синтаксический анализатор расчета сложных формул со скобками с нуля (не только с...

Обратная Польская Нотация на большом наборе формул
Собственно проблема не в понимании алгоритма, а как лучше представить данные, когда нужно...

Вычисление формул
Добрый день, помогите написать в Python формулы

Вычисление формул
Доброго времени суток. Я не разбираюсь в C#, но сдать эти задачи по учёбе нужно. Очень надеюсь на...

27
silent_1991
Эксперт С++
5025 / 3085 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
Завершенные тесты: 1
13.10.2010, 09:53 21
Где это вы видели такую запись "2 + -2"? Я знаю единственный подобный вариант - "2 + (-2)". А такое выражение без проблем можно отпарсить, я уже говорил, что если первое число в скобках отрицательно, то его можно сразу парсить как отрицательное.
0
Unril
802 / 693 / 109
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
13.10.2010, 10:07 22
В принципе любой математический пакет такую запись понимает. Например в Mathematica при вводе выражения "-(-2 + -2)*-(-3 + -2)" выводится ответ 20. Что аналогично "(-((-2) + (-2)))*(-((-3) + (-2)))".
0
silent_1991
Эксперт С++
5025 / 3085 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
Завершенные тесты: 1
13.10.2010, 10:15 23
Тем не менее так писать... Даже не знаю, как это сказать повежливей... Короче говоря, вряд-ли так кто-нибудь будет писать. Я бы уж точно не стал. Это менее читабельно, да и в школе учат записывать отрицательные числа, если они стоят не в начале выражения, в скобках.

Ну а на счёт вашего примера - зачем вы так утрируете? Эта запись аналогична "-(-2 + (-2)) * (-(-3 + (-2)))". Скобок конечно куча, но абсолютно все отрицательные числа всё же в скобки можно не брать. И так запишет, думаю, большинство.
0
Unril
802 / 693 / 109
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
13.10.2010, 10:20 24
Иногда лишние скобки только засоряют выражение. И, как видно, унарные плюс и минус имеют приоритет выше, чем бинарные.
Преобразование в постфиксную же запись становится только чуть более сложной, по крайней мере если использовать метод рекурсивного спуска, насчёт метода "сортировочной станции" сказать затрудняюсь.
0
13.10.2010, 10:20
silent_1991
Эксперт С++
5025 / 3085 / 271
Регистрация: 11.11.2009
Сообщений: 7,047
Завершенные тесты: 1
13.10.2010, 10:27 25
Вообще говоря идёт спор ни о чём, вопрос реализации - как сделать. Я предложил вариант. Если он не подойдёт ТСу, пусть сам думает, как парсить такое выражение, которое вы привели в 22 посте.

Добавлено через 48 секунд
Ну а реализация - думаю, лучше сначала пройтись по строке, и унарный минус заменить, скажем, на _
0
Unril
802 / 693 / 109
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
13.10.2010, 10:32 26
Это верно, тут всё зависит от принятых в начале договорённостей, как можно записать формулу для данного парсера, а как нельзя. Исполнение должно определяться задачей.
0
Vovan-VE
13.10.2010, 14:51
  #27

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
Тем не менее так писать... Даже не знаю, как это сказать повежливей... Короче говоря, вряд-ли так кто-нибудь будет писать.
У кто нам, программистам, запрещает написать -5 + ---9 ? :) Приоритеты для того и придумали.

0
silent_1991
13.10.2010, 15:28     Вычисление формул
  #28

Не по теме:

Vovan-VE,
Ну не знаю... Мне как-то даже глазу неприятно... Даже если так можно писать, я это делать категорически отказываюсь :D

0
13.10.2010, 15:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2010, 15:28
Привет! Вот еще темы с ответами:

Вычисление формул
Помогите составить программу в Pascal для вычисления по формуле: y=(a/x)+(b/x2) ...

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

Вычисление математических формул
Ребят, привет. Помогите, пожалуйста, с такой вот задачкой (желательно блок-схему, но если это...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.