Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Образовательный студенческий форум _ Информатика / Программирование _ Работа со строкой в Pascal/Delphi

Автор: Sixthirty 8.5.2011, 14:30

Всем доброго дня.
Разрабатываю программу, которая бы считала значения ф-ии и в будущем, выводила бы график.
Суть вот в чем. Например, отбросим построение графика, тогда можно все вывести через командную строку.
Программа должна работать так: program.exe -v x -v y "x+y", после чего вводятся значения икс и игрек. Выделить из строки выражение функции(х+у) не проблема, но проблема в том, чтобы подставить туда значения. Конечно, на простых ф-ях можно просто пройтись по строке и все заменить, но когда будут мало-мальски большие степени - будет трудно. Да и писать для каждой возможной ф-ии свой обработчик - извращение.
Хотелось бы услышать, как все же можно заставить программу считать по той ф-ии, которая вводится. Проверку на подлинность не нужно, допустим, что всё будет вводится по синтаксису.

Автор: Vahappaday 8.5.2011, 15:46

Ну, например преобразовать к обратной польской записи, а потом элементарно считается.
http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C

Автор: oxid 19.6.2011, 19:51

Цитата(Sixthirty @ 8.5.2011, 18:30) *

Всем доброго дня.
Разрабатываю программу, которая бы считала значения ф-ии и в будущем, выводила бы график.
Суть вот в чем. Например, отбросим построение графика, тогда можно все вывести через командную строку.
Программа должна работать так: program.exe -v x -v y "x+y", после чего вводятся значения икс и игрек. Выделить из строки выражение функции(х+у) не проблема, но проблема в том, чтобы подставить туда значения. Конечно, на простых ф-ях можно просто пройтись по строке и все заменить, но когда будут мало-мальски большие степени - будет трудно. Да и писать для каждой возможной ф-ии свой обработчик - извращение.
Хотелось бы услышать, как все же можно заставить программу считать по той ф-ии, которая вводится. Проверку на подлинность не нужно, допустим, что всё будет вводится по синтаксису.


Я бы написал синтаксический анализатор.. Это не сложно. Сразу будет и проверка синтаксиса и расширяемость и возможность вычислить что угодно.

Могу дать пример на perl для разбора языка похожего на sql.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)