Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767

Как правильно скорректировать порядок выполнения вычислений

03.03.2015, 16:20. Показов 702. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как правильно скоректировать порядок выполнения вычеслений математических уровнений например:

(35-30)*45+11.5/7
В c++ для этого используються токены(лексемы) но так и не поннял как они реализуються. Есть какие то примеры кода или статьи на этому? Правильно составить запрос в поисковик не получилось..

Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.03.2015, 16:20
Ответы с готовыми решениями:

Как поменять скорректировать имя что-бы отображалось правильно ?
Кто может дать пример кода что бы сделать так ? Из базы берется имя "Александр" или "Ваня" Имеется строка : Страница ...

Как правильно организовать итерационный процесс вычислений
Запутался немного в итерациях. Сначала L=L0, находится ti=qf/L(=L0)+tж, она подставляется в формулу для L=L0*(p(ti)/p(tж)*... и снова по...

Интерфейсы, прошу скорректировать меня, правильно ли я начал
Ребята, спасибо что Вы есть. Но вот проблема. Мой код кажется мне убогим, можете ли Вы подсказать, правильно ли я делаю. Вот задача: ...

8
 Аватар для UchihaSV
285 / 234 / 113
Регистрация: 08.06.2013
Сообщений: 725
03.03.2015, 17:31
Не совсем понял ваш вопрос.
Порядок вычислений математических уравнений как обычно в математике - сначала выполняется то что в скобках и умножение/деление выполняется в первую очередь.

Почему бы вам не пользоваться обычными математическими методами, например ставить скобки, для изменения приоритета выполнения.
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
03.03.2015, 18:06  [ТС]
UchihaSV, это все понятно. Но если данные приходят как строка?

Добавлено через 56 секунд
мда забыл про eval();
PHP
1
eval(" echo (35-30)*45+11.5/7;");
есть ли другие способы? Для общего развития..
0
 Аватар для UchihaSV
285 / 234 / 113
Регистрация: 08.06.2013
Сообщений: 725
03.03.2015, 18:32
bleef159, опять не совсем понятно, объясните подробнее и желательно с примером кода, чтобы была полная картина вашей проблемы.

Добавлено через 14 минут
А ну если уравнение в строке, то проще всего eval(), но можно и сделать парсер через регулярку preg_replace().

Добавлено через 8 минут
Вот есть готовый класс, для решения вашей проблемы: http://www.phpclasses.org/pack... ables.html
1
59 / 59 / 46
Регистрация: 01.03.2015
Сообщений: 179
03.03.2015, 19:52
В соответствии с приоритетом операторов.
http://php.net/manual/ru/langu... edence.php

Добавлено через 14 минут
Цитата Сообщение от bleef159 Посмотреть сообщение
есть ли другие способы? Для общего развития..
Можно написать рекурсивную функцию для вычисления значения выражение, но проще, конечно, сделать это eval'ом.
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
03.03.2015, 20:13  [ТС]
UchihaSV, задачи передомной не какой не стояло, просто вспомнил про книгу по c++ в котором разбирался калькулятор. Ну естественно хотел как поннять как реализовать эти лексемы на php. Вот сейчас только вспомнил что Пых у нас такой "уникальный" и существует такая конструкция как eval(). За preg_replace() отдельное спасибо с регулярками не когда не дружил, сейчас попробую.

Да, уровнение в строке должно быть.

Добавлено через 4 минуты
SB5Ch, приоретет операторов мне известен. Боюсь представить как будет выглядить рекурсивная функция для работы с математическими выражениями...
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
03.03.2015, 23:29
точно также и надо реализовывать, не надо eval-ить. Насколько я понимаю, вы говорите про книгу "Язык программирования C++" Страуструпа? Возьмите алгоритм оттуда и перепишите на PHP - все тоже самое, только код чуть упростится.
Цитата Сообщение от bleef159 Посмотреть сообщение
Боюсь представить как будет выглядить рекурсивная функция для работы с математическими выражениями
Лучше представьте, сколько памяти это скушает при более-менее большом выражении Да и не очень-то это удобно будет.
0
> /dev/null
 Аватар для Блеф
286 / 119 / 86
Регистрация: 14.05.2014
Сообщений: 767
04.03.2015, 21:21  [ТС]
KOPOJI, да "Принципы и практика использования c++". Спасибо, попробую.
А почему использование eval в данном случае - плохо? Понимаю что не безопастно, но а если жестко фильтровать входящие параметры?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
04.03.2015, 21:30
bleef159, потому что толком не сделаешь, например, ту же проверку на ноль при делении - вместо простенькой проверки на ноль делителя необходимо писать обработчик и устанавливать его через set_error_handler.
Это если навскидку..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.03.2015, 21:30
Помогаю со студенческими работами здесь

Порядок вычислений C++
Каков порядок вычисления для этого предложения,какие предположения можно сделать о типе операндов?Имеет ли место неоднозначность...

Как более правильно разместить переменную-флаг правильности вычислений?
Привет. Вычисления, в которых могут быть ошибки заключил в Try - Catch. Как более правильно разместить переменную-флаг правильности...

Как правильно привести данные в порядок
Здравствуйте всем, есть проблема, хочу сделать кластерный анализ k-среднее, есть данные в екселе, но никак не могу привести данные в...

Как правильно навести порядок в сетевых коммуникациях?
Подумываю вот привести серверную в порядок... Как правильно все расположить? Выделить отдельную стойку под все сетевое оборудование, а...

Подскажите как правильно найти порядок в 1-м бите
1 й байт 4-х байтного float равен 40 (или 43). в двоичной системе 40 = 00101000. знак "+" а степень нужно нормализовать т.е. +64 ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru