Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Математическое приложение - разбор формулы


Leshas ©   (2006-04-17 14:17:00) 

Здравствуйте!

Есть Edit, в который я ввожу функцию.
Необходимо по этой функции постоить график.

Как построить график знаю, как разобрать формулу - приблизительно представляю: прочитал статью http://www.cyberinfo.ru/cgi-bin/view.cgi?id=269&cat_id=5&print=1

В этой статье есть функция rasstr(a).
У меня вопрос: как эту функцию реализовать?

P.S. Функции в Edit будут простые: y=x, y=2+x, y=2*x+3 и т.п.


kilkennyCat   (2006-04-17 16:23:00) [1]


> Leshas ©   (17.04.06 14:35) [6]


Это был ответ на "как перевести строку в число".


Юрий Зотов   (2006-04-17 16:09:00) [2]

> Leshas

Ежели подходить к делу умеючи, то интерпретатор математических выражений (строчный калькулятор) пишется максимум за один день. Причем полный, со всеми операциями (включая возведение в степень), с поддержкой скобок (в том числе, вложенных), со встроенными функциями и всем прочим. Кстати, можно обойтись и без польской записи.

А чтобы подойти к делу умеючи, проштудируйте вот эту статью:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=10


Leshas   (2006-04-17 15:01:00) [3]

Ega23, а что скажешь относительно статьи (ссылка в самом 1-ом сообщении)?????


Ega23   (2006-04-17 15:00:00) [4]


> Хм... это, к сожалению, я не знаю, поэтому конкретно это
> можно изучить))


А это и есть приоритетность операций.


Сергей М.   (2006-04-17 15:00:00) [5]


> Leshas ©   (17.04.06 14:39) [9]


http://www.activeserverpages.ru/iishelp/VBScript/htm/VBStoc.htm


Leshas   (2006-04-17 14:55:00) [6]


> Чему равно FE40 and not (A2B1 or 5D) xor AEC

Хм... это, к сожалению, я не знаю, поэтому конкретно это можно изучить))


Ega23   (2006-04-17 14:44:00) [7]


> Про приоритетность операций всё понятно с начальных классов,


Уверен?
Чему равно FE40 and not (A2B1 or 5D) xor AEC  ?
(Это из уроков Юрия Зотова, http://www.delphikingdom.com/lyceum/seminar.asp?ID=1)


Leshas   (2006-04-17 14:39:00) [8]


> На то есть, к примеру, VBScript.
> И изобретать при этом ничего не надо


Где про это можно почитать?


Сергей М.   (2006-04-17 14:38:00) [9]


> Leshas ©   (17.04.06 14:35) [6]


На то есть, к примеру, VBScript.
И изобретать при этом ничего не надо.


Leshas   (2006-04-17 14:38:00) [10]

Сергей и "народ", извините, что я вас всех опустил ниже плинтуса, назвав функции "простыми" вместо "линейных" с одной целью, чтобы меня поняли.

Для начала мне нужно написать разбор линейныхфункций))

Ega23
Спасибо!
Посмотрю, что есть по "Польской записи". Про приоритетность операций всё понятно с начальных классов, а вот парсер никогда не писал.


Leshas   (2006-04-17 14:35:00) [11]

kilkennyCat, а если Edit.Text = " 25+10*2" и я воспользуюсьStrToInt, StrToFloat, то результат будет 45??? Хм... мне кажется, что будет ошибка... или я не прав?


Сергей М.   (2006-04-17 14:34:00) [12]


> иногда приходится объясняться именно так


Ты уж местный народ совсем до плинтуса опустил) ... постыдился бы)

Судя по вопросу речь идет о построении графиков линейныхфункций ?


Ega23   (2006-04-17 14:32:00) [13]


> Как перевести строку в число, чтобы выполнились математические
> операции?


1. Изучить и понять то, чем является т.н. "Польская запись"
2. Изучить приоритетность операций.
3. Написать парсер простых функций.

В своё время у меня на всё на это ушло где-то 2 дня.


kilkennyCat   (2006-04-17 14:28:00) [14]

strtoint, strtofloat


Leshas   (2006-04-17 14:27:00) [15]

Да, Сергей, иногда приходится объясняться именно так.

В статье написано, что функция rassrt– подпрограмма для решения строчек, в которых нет приоритетных скобок (только арифметические действия).
Последний раз rasstr применяется для решения конечной строки, из которой мы убрали все приоритетные скобки. Переводим строку в число, и получаем значение исходной строки с формулой, т.е. результат.


Как перевести строку в число, чтобы выполнились математические операции?


Сергей М.   (2006-04-17 14:22:00) [16]

Любопытно было бы услышать определение термина "простая функция"


Наверх

Титульная страница Поиск, карта сайта Написать письмо