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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141
#1

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

23.05.2011, 11:55. Просмотров 764. Ответов 6
Метки нет (Все метки)

Доброго врмени суток.
Проблема собственно в следующем: как можно на с++ сделать очередь команд?
Т.е. допустим в консоли вводится что-то вроде
C++
1
"8432.28 + 9.7e3"
так вот, после прочтения строки было бы неплохо вызвать конструкторы разных классов, записав результат в массиве абстрактного базового класса, а потом вызвать операцию сложения...

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

Не по теме:

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

Глупец
23 / 23 / 1
Регистрация: 17.05.2011
Сообщений: 141
23.05.2011, 12:08  [ТС]     Очередь команд #4
Покажи пожалуйста, а то я не совсем понял, что ты имел ввиду под "польской записью"))
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,412
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++ Перечень команд на с++ с их описанием
C++ Считывание команд из файла
Выполнение консольных команд C++

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

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

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