Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2013, 10:42   #1
ruN00b
Почетный нуб
Форумчанин
 
Аватар для ruN00b
 
Регистрация: 07.05.2013
Сообщений: 155
По умолчанию Текстовый калькулятор

Нужна такая вот штука:
В строке X введено какое-то выражение, скажем 14-3*4+2, а программа решает это выражение и выдает результат в строку X.
Как просто складывать, вычитать, а также умножать и делить слева на право, я понял. Т.е. 3+5-7 у меня пишет 1, но выражение выше пишет 46, вместо 0.
Как заставить программу учитывать скобки, знаки умножения и деления? Вот в чем вопрос...
Извиняюсь, если когда-то где-то кто-то уже это спросил.
ruN00b вне форума Ответить с цитированием
Старый 04.07.2013, 11:12   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Спрашивали неоднократно.
Пишите свой парсер строковых математических выражений, или ищите готовый в сети.
Он пишется довольно просто.

Есть операторы, цифры и модификаторы.
Операторы: +, -, *, \
Цифры 2 типов: целые, дробные, и 3 категории: положительные и отрицательные и просто нуль.
Модификаторы: Всякие скобки и им подобные, они влияют на расстановку приоритетов и порядок решения. Например:
2 * 2 + 3 = 6
Если докинуть скобок: 2 * (2 + 3) = 10

У каждого элемента есть: порядок(приоритет) решения, положение в строке. Хотя достаточно это прописать операторам т.к. у них есть левая и правая части с которыми делается что-то.
Человек_Борща вне форума Ответить с цитированием
Старый 04.07.2013, 11:23   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если свой парсер, то ищите польская запись или польская нотация
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.07.2013, 11:55   #4
ruN00b
Почетный нуб
Форумчанин
 
Аватар для ruN00b
 
Регистрация: 07.05.2013
Сообщений: 155
По умолчанию

Нашел парсер пользователя Serge_Blyzhnikov вот здесь вот. Пока не тестировал, но по описанию мне подходит.

Делаю нечто похожее на DOS. Назвал WinDOS. Уже и псевдо-компилятор со своим языком прикрутил, есть аналог процедур консоли writeln и printf, процедура draw, рисующая картинку из пути по координатам, цикл for. Но захотелось, чтобы картинка и for круче работали. К примеру, загрузка картинки со смещением 50 пикселов по иксу.

Парсер позже проверю, отпишусь, если подойдет, прикручу к WinDOS, а сам WinDOS выложу здесь.

То, что пишется просто, мне кажется, что просто на этапе операторов +-*/. А дальше все.. Мое понимание того что я пишу постепенно пропадает:D

Блин, этот парсер под C. Нашел вне форума пару парсеров, проверю их.

Последний раз редактировалось ruN00b; 04.07.2013 в 12:02.
ruN00b вне форума Ответить с цитированием
Старый 04.07.2013, 12:22   #5
Armorer
Подтвердите свой е-майл
 
Регистрация: 07.04.2007
Сообщений: 120
По умолчанию

Вот, статья хорошая на эту тему. К ней примры есть.
Armorer вне форума Ответить с цитированием
Старый 04.07.2013, 12:32   #6
ruN00b
Почетный нуб
Форумчанин
 
Аватар для ruN00b
 
Регистрация: 07.05.2013
Сообщений: 155
По умолчанию

Armorer, спасибо, проверю, отпишусь!
ruN00b вне форума Ответить с цитированием
Старый 04.07.2013, 12:58   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Нашел парсер пользователя Serge_Blyzhnikov вот здесь вот. Пока не тестировал, но по описанию мне подходит.

Блин, этот парсер под C. Нашел вне форума пару парсеров, проверю их.
Вы ошибаетесь!!!
EXPRUS.rar — это "чистый" Паскаль ("чистый" - потому как писалось это всё ещё под turbo pascal под DOS)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.07.2013, 14:11   #8
ruN00b
Почетный нуб
Форумчанин
 
Аватар для ruN00b
 
Регистрация: 07.05.2013
Сообщений: 155
По умолчанию

Пасиб, просто тема находилась в разделе Си, я и подумал, что это сишка. Ну, тогда попроще, а то я пусть и знаю Си, но ооочень плохо.
ruN00b вне форума Ответить с цитированием
Старый 06.07.2013, 22:15   #9
ruN00b
Почетный нуб
Форумчанин
 
Аватар для ruN00b
 
Регистрация: 07.05.2013
Сообщений: 155
По умолчанию

Парсер не подошел. Попытаюсь сделать свой.

Вот программка (WinDOS).
Помощь по командам: вводим help и жмем Enter

Редактор (компилятором стыдно назвать) "языка программирования": вводим wdc и жмем Enter
Открыть проект в редакторе: последняя строка - всегда название файла, как для сохранения, так и для загрузки. Просто вводим название нужного проекта (примеры хранятся вместе с экзешником под форматом .wdc).
Открыть проект в WinDOS: вводим wdc open <имя файла без типа> и жмем Enter

Некоторые примеры не работают, либо работают некорректно.

Скачать: Яндекс.Диск
ruN00b вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор Djeka(c) Общие вопросы Delphi 6 18.05.2012 10:56
Комментарии к листингу(калькулятор,текстовый редактор) С++ Builder lexoff Помощь студентам 2 30.05.2011 19:31
Калькулятор на с++ Banner Помощь студентам 2 07.02.2011 11:42
калькулятор! Чика Общие вопросы Delphi 7 07.10.2010 18:05
Текстовый файл в текстовый массив Kimimaru Общие вопросы C/C++ 1 02.12.2007 11:55