• 33006
  • 250
  • 8
Нравится блог?
Подписывайтесь!

Калькулятор со скобками на php

 

Здравствуй, уважаемое сообщество и просто земляки. Этот анонс будет посвящен калькулятору на php, но не просто калькулятору, исходников которого можно найти тысячи на просторах интернета, а калькулятору, умеющему считать выражения в скобках с неограниченной вложенностью. Исходников последнего я в интернете не встречал, поэтому написал сам. Критика приветствуется, потому как вариант еще сырой.

Встречаем

14 марта 2010, 16:13
2723

Загрузка...
Loading...

Комментарии

xapon
0
0
Я решил написать комент, но у меня нет standalone-блога, поэтому комент тут: www.google.ru
=) крутой коммент
по поводу die() согласен с вами, оправдаюсь тем, что писалось все "на коленке", поэтому не такое подробное описание...
Я считаю, что с регулярными выражениями большой сложности нет, главное алгоритм...
но если вам интересно, то ...
разберу самое длинное выражение "@(-?(:?\d+\.)?\d+)([-+*\/])(-?(:?-?\d+\.)?\d+)@"
слева направо, как и полагается:
(-?(:?\d\.)?\d+) - первое число, ([-+*\/]) - знак и (-?(:?\d+\.)?\d+) - второе число
-? // стоит ли минус перед числом
(:?\d\.)? // является ли оно дробным, если присутствуют цифры и знак "." 0 или 1 раз, то дробное; :? в скобках говорит о том, что мы просто группируем выражение, т.е. оно не попадает в результат.

пока писал объяснение, нашел ошибку =)
во втором числе в регулярном выражении лишний минус

спасибо за интерес к калькулятору.
эх ты, надо было не новый коммент писать а на тот отвечать..., как в первом посте прям! давно тебя здесь не было
xapon
0
0
спасибо за разъяснение, а то с регулярками я очень не дружу)
имхо это хороший пример того, где не надо использоваться регулярные выражения (:
угу, лучше было бы сделать на токенах, но это уже совсем другой калькулятор.
class Exp
{
public static function calc($sExp)
{
if (@preg_match('@^[\s0-9\+\-\*/()]+$@', $sExp)) {
$rResult = 0;
@eval('$rResult = (float) ' . $sExp . ';');
return $rResult;
}
else {
throw new Exception("evalExp: Unexpected sign");
}

}

}

echo Exp::calc("2*2");
xapon
0
0
класс ради класса? оО
Класс-утилита, которая вычисляет выражение. А вы о чем?
eval'ом вообще можно ничего не делать , он сам подсчитает
иногда хочется изобрести велосипед, пусть и с квадратными колесами =)
Когда мы набирали группу разработки,
одним из тестовых заданий был калькулятор выражений.
Если интересно можете его реализовать.
Newinttech Homework. Калькулятор выражений.pdf files.gw.kz
расскажите тогда, как сделать по-другому, без них
kseeker уже сказал - на токенах.
не затруднит ли вас ссылочку на токены, буду расширять кругозор

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Казком берет комиссии за оплаты по карте. Почему на это закрывают глаза Visa и MasterCard?!

Казком берет комиссии за оплаты по карте. Почему на это закрывают глаза Visa и MasterCard?!

Покупаешь в супермаркете продукты на 5000 тенге и банк забирает себе еще 30-50 тенге. То есть, продукты обошлись уже не в 5000, а в 5050 тенге.
ValentinaVladimirska
25 мая 2017 / 22:56
  • 13920
  • 29
Вырубка деревьев в Алматы под БРТ. Проект уже нанес городу экологический ущерб

Вырубка деревьев в Алматы под БРТ. Проект уже нанес городу экологический ущерб

Как ранее уже сообщалось из-за строительства БРТ в Алматы пострадают значительное количество деревьев. На прошлой неделе вырублены первые вязы и клён, - под расширение проезжей части на улице...
SKYFALL
24 мая 2017 / 17:20
  • 11757
  • 18
Узаконенное варварство в стране, принимающей «EPXO». Еще далеко нам до «топ-30 развитых стран»

Узаконенное варварство в стране, принимающей «EPXO». Еще далеко нам до «топ-30 развитых стран»

В продвинутых государствах едва ли поймут, почему в столь развитом, успешном и преуспевающем Казахстане от имени и по заданию властей творятся такие зверства над животными.
openqazaqstan
24 мая 2017 / 12:12
  • 10983
  • 102
Системная коррупция стала главной угрозой для Казахстана. У нас воруют миллиардами

Системная коррупция стала главной угрозой для Казахстана. У нас воруют миллиардами

Коррупционные отношения вышли на такой уровень, что они уже начинают дискредитировать всю систему управления.
openqazaqstan
26 мая 2017 / 13:45
  • 8589
  • 34
Пока полицейские будут прощать, им будут бить и по чести, и по лицу

Пока полицейские будут прощать, им будут бить и по чести, и по лицу

Судья Алмалинского районного суда Куаныш Арипов ломает стереотипы отношения граждан к представителям Фемиды. Напавшему на полицейского экс-сотруднику алматинского акимата он назначил наказание выше...
Mirogloff
24 мая 2017 / 16:41
  • 4084
  • 9
Аблязов загробным голосом декларирует «ДВК-2». Монолог обиженного человека

Аблязов загробным голосом декларирует «ДВК-2». Монолог обиженного человека

Последний монолог Аблязова о «продолжении борьбы с режимом» и «ДВК-2», при всём желании, не выглядел как какой-то политический манифест.
openqazaqstan
25 мая 2017 / 13:53
  • 3361
  • 62
Начинаю понимать, почему большинство разводов приходится на время беременности

Начинаю понимать, почему большинство разводов приходится на время беременности

У него нет растяжек на теле, его не тошнит и не рвет, у него не расходятся кости таза, нет тяжести при ходьбе, его по органам никто изнутри не пинает. Как тяжело выдержать 9 месяцев мужику, бедные...
idol_true
26 мая 2017 / 16:52
  • 3534
  • 95
«114» на связи: актуальные вопросы о Рамадане

«114» на связи: актуальные вопросы о Рамадане

Можно ли держать Оразу только три дня? Необходимо ли удалиться из социальных сетей во время поста? - на эти и другие вопросы отвечает исламовед Шерзод Пулатов.
lyalusha
27 мая 2017 / 8:30
  • 3180
  • 4
Я могла простить Америке ее неидеальность, но никак не фальшь

Я могла простить Америке ее неидеальность, но никак не фальшь

Прошло 8 лет, с тех пор как я живу в этой стране, но всего лишь год, как я увидела ее во всей красе. Моя жизнь тоже стала похожей на эту страну, с виду идеальная, успешная, но внутри пустая.
stervastyle
26 мая 2017 / 6:38