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

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

 

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

Встречаем

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

Загрузка...

Комментарии

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

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

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Дастархан в те времена был скромен. Не было понятия «сынау» - осуждения кто как живет, какой в доме ремонт и т.д. Пока взрослые обсуждали задержку заработной платы, мы играли в армию, жмурки, строили городки...
socium_kzo
5 дек. 2016 / 15:19
  • 14249
  • 19
Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

"Мужчины должны у вас тут права качать, ибо их процент в вашей численности населения уступает проценту женщин". Я машинально начала уверять, что у нас в стране таковых не имеется...
Sapientia
5 дек. 2016 / 10:52
  • 9466
  • 67
Распил 1 млрд долларов или спасение для Алматы? В 2017-м начнётся строительство БАКАД

Распил 1 млрд долларов или спасение для Алматы? В 2017-м начнётся строительство БАКАД

Конечно, Алматы заслужил эту дорогу. Невзирая на все издержки, которые могут возникнуть. Заслужил и как крупнейший город Казахстана, и как субъект, формирующий своими налогами около четверти всех...
merurg
вчера / 12:35
  • 5768
  • 15
10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

Я почти год проработала в школе, и когда уходила оттуда, была самым счастливым человеком в мире. Тот год, честно говоря, я и сейчас вспоминаю с ужасом.
demonica
6 дек. 2016 / 17:21
  • 4969
  • 77
Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Как сообщают новостные издания, в ближайшее время в Южном Казахстане 102 детям в возрасте 11-12 лет сообщат об их страшном диагнозе. Все эти дети были заражены ВИЧ, причём большинство было инфицировано по вине врачей.
openqazaqstan
2 дек. 2016 / 13:57
  • 4460
  • 4
Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Трамп и не подозревает, что 16 декабря 1991 Казахстан не создал, а восстановил свою национальную государственность. Иначе бы он упомянул не только 25 лет, а больше чем 550 лет казахской истории.
Stehlikova
2 дек. 2016 / 9:02
  • 5113
  • 88
Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Давно ждал запуска электронного билетирования в общественном транспорте Астаны. В ноябре 2016 года этот день настал. Мой опыт насчитывает последние 2 недели и мне есть чем поделиться.
iamYerlan
1 дек. 2016 / 15:24
  • 3480
  • 17
На самом деле дела плохи: казахстанские школьники на 49-м, а не на 12-м месте по математике

На самом деле дела плохи: казахстанские школьники на 49-м, а не на 12-м месте по математике

О том, как масс-медиа раздула миф о казахстанских вундеркидов в розовый воздушный шар, пока его не проколола правда-иголка. Получается, что казахстанские дети не могут применить теорию в практике...
ardakzhurynov
вчера / 0:17
  • 3147
  • 22
После крупной пьяной аварии бизнесмены в Чечне отказались торговать спиртным. В Казахстане едва ли такое возможно

После крупной пьяной аварии бизнесмены в Чечне отказались торговать спиртным. В Казахстане едва ли такое возможно

После тяжкого ДТП по вине пьяного водителя в Чечне закрылись все магазины, торгующие алкоголем. Их владельцы – 14 бизнесменов – добровольно отказались от выданных им лицензий.
openqazaqstan
5 дек. 2016 / 13:09