BigG LaMMo
|
отправлено: 22-11-2002 15:13:00 | |
инфо • правка • ссылка • сообщить модератору |
В процессе выполнения программы пользователь воодит строку с некой математической формулой (к прмеру "x*x+sin(2x)"), а потом программа должна выполнить с ней некие опреации (построить график). Т.е нужно прогнать цикл по этой формуле, которая неизвестна заранее. Как мне это реализовать (язык любой, но лучше С/С++)?
|
|
IP |
|
Inhuman
Участник
1008
|
отправлено: 22-11-2002 16:36:00 | |
инфо • правка • ссылка • сообщить модератору |
делаешь транслятор со своего входного языка, всего-то делов. подобной информации полно в инете попробуй поискать по ключевым словам bizon и flex |
|
IP |
|
Sunflower
the scorpion
1492
|
отправлено: 22-11-2002 17:13:00 | |
инфо • правка • ссылка • сообщить модератору |
To BigG LaMMo Я в своё время писал интерпретатор арифметических выражений любой сложности, но там речь шла только о числах, знаках операций и скобках. А тебе тут, получается, надо немалый кусочек компилятора написать. Ты точно уверен, что задача стоит именно так? Дело в том, что это достаточно серьезно, даже если сложность формул как-то ограничена. |
|
IP |
|
MBD
Moderator
Climbing and Drinking
|
|
Pasha
Участник
|
отправлено: 22-11-2002 21:42:00 | |
инфо • правка • ссылка • сообщить модератору |
To BigG LaMMo А что, не так уж сложно это всё. Сначала -- синтаксический анализ проводишь, потом считаешь и строишь. Только долго и нудно это |
|
IP |
|
LDestroy
Участник
1380
|
отправлено: 23-11-2002 00:27:00 | |
инфо • правка • ссылка • сообщить модератору |
To BigG LaMMo читай здесь : \\bayda\tech_lib\programming\Компиляторы и интерпретаторы (Создание)\Обpатная польская нотация (постфиксная).htm... с экзамплом на сях ... |
|
IP |
|
Sunflower
the scorpion
1492
|
отправлено: 23-11-2002 02:23:00 | |
инфо • правка • ссылка • сообщить модератору |
To BigG LaMMo Да, а потом сможешь блеснуть такими перлами, как "польская инвертная запись" (она же "полИн" и "обратная польская нотация"), "отделение предикатов" и т.п. |
|
IP |
|
wws
Участник
|
отправлено: 23-11-2002 14:49:00 | |
инфо • правка • ссылка • сообщить модератору |
To BigG LaMMo Вот мой модуль на паскале: \\wws\ico\STRPlus.pasПоддерживает константы, переменные, функции и т.д. Арифметические операции: +,-,*,/,^ Разделителем в не целых числах должна быть точка.
|
|
IP |
|
|