строковый dos-калькулятор

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
itwork
Сообщения: 79
Зарегистрирован: 28 дек 2006, 15:20

People, как можно сделать строковый dos-калькулятор на паскале, т.е водится строка "x^2+ 34 - 1/sqrt(x-2), ну и т.д" и как сделать программа выводила Ответ! Ваши советы или где есть подобные примеры???
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Сколько раз уже подобная тема поднималась... Я в свое время писал курсач по символьному дифференцированию выражения.
Строку надо разбить на лексемы. В нашем случае это константы и знаки операций. Как с переменными - даже не знаю, один из вариантов - создать массив, заполнять который нужно записями - строка с именем переменной и ее значение. Отдельно найти скобки, вначале (рекурсивно) посчитать то, что в скобках. Не забыть про порядок действий. То есть, в данном случае:
- найти выражение в скобках "х+2"
- пробежаться по нему в поисках операции возведения в степень, потом умножения-деления, найти только одинокий минус.
- Взять лексемы справа и слева от него. Слева - х, справа - 2.
- пробежаться по массиву, найти запись со строкой "х", вытянуть из нее значение, скажем, 15.
- вычислить 15-2=13.
- на место "х-2" записать "13"
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
SergeyS
Сообщения: 196
Зарегистрирован: 21 ноя 2006, 17:12
Откуда: Хакасия, Абакан
Контактная информация:

зайди на сайт http://www.torry.ru
в поле quick search введи слово "expression" (без кавычек) получешь кучу компонентов причем бесплатных, причем с исходниками, причем на паскале...

а если хочешь все это сделать полностью самому, то это тебе прямая дорога к литературе по лексическим анализаторам, особенно рекомендую обратить внимание на Yacc & Lex (поищи инфу по ним в яндексе, а исходники для делфи можно найти на том же torry.ru)
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

Я в свое время такой курсач писал. Он у меня графики рисовал и всякие интегралы считал.
Ramzey
Сообщения: 52
Зарегистрирован: 12 дек 2006, 12:56

Синтаксический анализатор я выдумывал сам и "изобрел" велосипед под названием извращенная форма Бекуса-Наура. (Я потом узнал про БНФ, РБНФ и др.)
Ответить