Форум программистов, компьютерный форум CyberForum.ru

Очередь команд - C++

Восстановить пароль Регистрация
 
Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141
23.05.2011, 11:55     Очередь команд #1
Доброго врмени суток.
Проблема собственно в следующем: как можно на с++ сделать очередь команд?
Т.е. допустим в консоли вводится что-то вроде
C++
1
"8432.28 + 9.7e3"
так вот, после прочтения строки было бы неплохо вызвать конструкторы разных классов, записав результат в массиве абстрактного базового класса, а потом вызвать операцию сложения...

Я собственно не понимаю какой тап данных будет в ней храниться (void*???) и как записывать в нее адреса методов класса, если кто подскажет, буду признателен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.05.2011, 11:57     Очередь команд #2
Почитайте Страуструпа
Там есть пример такого калькулятора, как раз начал его читать
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
23.05.2011, 11:59     Очередь команд #3
Глупец, можно парсить строку, приводить ее к обратной польской записи и уже потом вычислять. Я уже когда-то писал подобный велосипед, если хочешь, могу поискать.

Не по теме:

Блин, написал ответ, а такое ощущение, что обозвал...

Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141
23.05.2011, 12:08  [ТС]     Очередь команд #4
Покажи пожалуйста, а то я не совсем понял, что ты имел ввиду под "польской записью"))
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
23.05.2011, 12:32     Очередь команд #5
Цитата Сообщение от Глупец Посмотреть сообщение
а то я не совсем понял, что ты имел ввиду под "польской записью"))
ищи в википедии и гугле по ключевым словам "обратная польская запись".
Вот моя лабораторка - разбор и вычисление логических выражений (работает с целыми числами, операторами > ("Больше"), < ("Меньше"), ! ("Не"), = ("Равно"), & ("И"), | ("Или"), константами true и false, скобками переопределяется приоритет операций)
lab4.zip
Выражения задаются как аргументы командной строки.
Пример использования
Код
[nameless@desktop lab4]$ ./lab4 \
> '!(3 > 4) & (3 = 4 | 4 < 5) & (4 = 4 & true)' \
> ' > 3' \
> 'true & !true' \
> '() 3 > 2' \
> '' \
> '3 99 = 99' \
> 'false | !false' \
> '4 + 5 = 9'
Вычисляем выражение '!(3 > 4) & (3 = 4 | 4 < 5) & (4 = 4 & true)':
Результат: 1 (true)

Вычисляем выражение ' > 3':
pstack: ошибка чтения - стек пуст
Неожиданная ошибка возле токена '>'
Невозможно вычислить выражение из-за возникших ошибок

Вычисляем выражение 'true & !true':
Результат: 0 (false)

Вычисляем выражение '() 3 > 2':
Ошибка: пустые скобочные конструкции запрещены
Невозможно вычислить выражение из-за возникших ошибок

Вычисляем выражение '':
Ошибка: попытка вычислить пустое выражение
Невозможно вычислить выражение из-за возникших ошибок

Вычисляем выражение '3 99 = 99':
Ошибка: не удалось разобрать выражение
Невозможно вычислить выражение из-за возникших ошибок

Вычисляем выражение 'false | !false':
Результат: 1 (true)

Вычисляем выражение '4 + 5 = 9':
Ошибка: неизвестная лексема '+'
Невозможно вычислить выражение из-за возникших ошибок

Всего выражений: 8
Успешно вычислено: 3
Не удалось вычислить: 5
[nameless@desktop lab4]$
Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141
23.05.2011, 12:36  [ТС]     Очередь команд #6
Спсибо большое, буду разбирать)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 12:45     Очередь команд
Еще ссылки по теме:

Анализатор команд C++
Создать очередь. Добавить элемент в очередь. Удалить элемент из очереди C++
Очередь, теория. Очередь на шести стеках C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
23.05.2011, 12:45     Очередь команд #7
Вот обычный калькулятор (немного больше быдлокода): http://www.cyberforum.ru/cpp-experts...tml#post897782 - обычные арифметические операции + несколько простых функций. Требует regex (буст или c++0x)
Yandex
Объявления
23.05.2011, 12:45     Очередь команд
Ответ Создать тему
Опции темы

Текущее время: 20:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru