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

Парсер для математических выражений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
SFML Ввод текста в переменную (sfml) http://www.cyberforum.ru/cpp-beginners/thread1493472.html
Всем привет!Как в sfml осуществить ввод текста в переменную?Заранее спасибо!
C++ Убрать/скрыть окно консоли Всем привет!Я пишу на notepad++,компилирую через командную строку.Как мне убрать консольное окно?Заранее благодарен! http://www.cyberforum.ru/cpp-beginners/thread1493471.html
C++ ReadProcessMemory медленно читает значение адреса
while (true) { if (isRun) { try { ReadProcessMemory(ProcessHandle, (void*)TimeAddress, &Time, sizeof(osuTime), NULL); std::cout << Time << std::endl; } catch (const std::exception&) {} }
ReadProcessMemory медленно читает значение адреса C++
while (true) { if (isRun) { try { ReadProcessMemory(ProcessHandle, (void*)TimeAddress, &Time, sizeof(osuTime), NULL); std::cout << Time << std::endl; } catch (const std::exception&) {} }
C++ Вычислить значения функции на заданном интервале http://www.cyberforum.ru/cpp-beginners/thread1493454.html
Написать программу вычисления функции y на заданном промежутке с шагом 0.2 и построить график функции y, причем y={e}^{-(x+0.8)} при х>3.61 y=1 при x\in \left y=0.5x при x<0
C++ Заполнить квадратную матрицу натуральными числами по спирали Составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3, …, n2, записывая их в нее «по спирали» против часовой стрелки. подробнее

Показать сообщение отдельно
Fulcrum_013
609 / 694 / 72
Регистрация: 14.12.2014
Сообщений: 5,414
Завершенные тесты: 3
05.07.2015, 20:12     Парсер для математических выражений
Цитата Сообщение от Renji Посмотреть сообщение
Нафиг enum, нафиг switch по ним. Каждая элементарная операция описывается объектом function, в этом объекте лежит виртуальная функция calculate, которая эту элементарную операцию и считает.
Только элемент дерева можно и так создавать:
C++
1
    case PLUS: return [&, left, right]() { return left() + right(); };
Цитата Сообщение от Renji Посмотреть сообщение
Через древо разбора функцию считать не удобнее будет? По крайней мере, не нужно будет ручками работу со стеком реализовывать.
Главное распознавать справа налево. Тогда можно хоть дерево генерить не заморачиваясь с приоритетами, хоть сразу машкод.

Добавлено через 4 минуты
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
а можно ссылочку на описание алгоритма?
Описание не читал Должно быть в стандарте С++,. Но смысл такой - если идешь с права налево, то операции просто сохраняют приоритет. Со скобками - закрывающаяся поместить аккумулятор в стек, открывающаяся - извлечь. по этой же причине и аргументы в стек С++ справа на лево вычисляет и засовывает.
 
Текущее время: 11:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru