|
|
|
| У меня есть хорошая задачка - калькулятор.
Я ее написал, но хочу посмотреть, как можно еще написать.
В форму пользователь дает выражение (включая скобки). Надо вывести результат.
Можно сделать "защиту от дурака"
1) проверить, правильное ли скобочное выражение, если нет - сообщить.
2) если есть деление на ноль - то выдадвать уведомление.
Вот так.) Это что бы вы не соскучились по задачам на php. | |
|
|
|
|
 1.6 Кб |
|
|
для: AlMag
(08.02.2007 в 13:33)
| | Никогда не пробовал кулькулятор писать... Решил исправить ситуацию :)
Кое-что насочинял - вроде работает хорошо, но под конец чуть сам не запутался как оно там у меня работает =)
Прикрепил скрипт. На ваш тоже с удовольствием посмотрю!
Зы: можно было бы eval'ом обойтись, но я решил что без него интересней. | |
|
|
|
|
|
|
|
для: kasmanaft
(09.02.2007 в 23:46)
| | какой сюрр! :))
Сплошные preg'и! | |
|
|
|
|
|
|
|
для: kasmanaft
(09.02.2007 в 23:46)
| | У Вас какой-то не полный скрипт.
Прикрепите еще раз. | |
|
|
|
|
|
|
|
для: AlMag
(12.02.2007 в 10:20)
| | Полный... я решил без формы обойтись... в $calc содержится выражение для вычислений | |
|
|
|
|
|
|
|
для: kasmanaft
(12.02.2007 в 15:16)
| | мда... ))
Надо мне подучить регулярные выражения, а то разобрать Ваш скрипт не могу... ))
(1-5+(7/7))*(7+3) на этот тест выводит неверный ответ... Наверное потому, что (7/7) | |
|
|
|
|
|
|
|
для: AlMag
(12.02.2007 в 16:30)
| | Точно глюк. А я пока тестировал ничего такого не обнаружил... Но дело не именно в 7/7, а в том что после вычисления первой скобки получится "-4++1", а "++" я не учел, к сожалению. Подправил немного код и прикрепил - может быть кому-то будет интересно.
>> Надо мне подучить регулярные выражения ...
Согласен, вот это "\((((?!(\)|\()).)+)\)" выглядит устрашающе :)
Это рег. выражение ищет скобку, в которой не было бы вложенных скобок... Его вполне можно заменить на что-то вроде (правда код тогда придется подправить)
$pos_op = strrpos($calc, '(');
$pos_cl = strpos($calc, ')', $pos_op);
echo substr($calc, ++$pos_op, $pos_cl-$pos_op);
|
Но до меня это дошло уже после написания РГ (в любом случае с РГ красивше смотрицо :))
А остальные выражения вроде не сложные.
// есть еще глюк.. можно помножить или поделить на пустоту, тогда всё дело просто зависнет.
// и со знаками не нужно злоупотреблять ..." 1-(-(-1))" уже не прокатит... | |
|
|
|