Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Задачка на досуг)
 
 автор: AlMag   (08.02.2007 в 13:33)   письмо автору
 
 

У меня есть хорошая задачка - калькулятор.
Я ее написал, но хочу посмотреть, как можно еще написать.
В форму пользователь дает выражение (включая скобки). Надо вывести результат.
Можно сделать "защиту от дурака"
1) проверить, правильное ли скобочное выражение, если нет - сообщить.
2) если есть деление на ноль - то выдадвать уведомление.
Вот так.) Это что бы вы не соскучились по задачам на php.

   
 
 автор: kasmanaft   (09.02.2007 в 23:46)   письмо автору
1.6 Кб
 
   для: AlMag   (08.02.2007 в 13:33)
 

Никогда не пробовал кулькулятор писать... Решил исправить ситуацию :)
Кое-что насочинял - вроде работает хорошо, но под конец чуть сам не запутался как оно там у меня работает =)
Прикрепил скрипт. На ваш тоже с удовольствием посмотрю!

Зы: можно было бы eval'ом обойтись, но я решил что без него интересней.

   
 
 автор: Trianon   (10.02.2007 в 17:13)   письмо автору
 
   для: kasmanaft   (09.02.2007 в 23:46)
 

какой сюрр! :))
Сплошные preg'и!

   
 
 автор: AlMag   (12.02.2007 в 10:20)   письмо автору
 
   для: kasmanaft   (09.02.2007 в 23:46)
 

У Вас какой-то не полный скрипт.
Прикрепите еще раз.

   
 
 автор: kasmanaft   (12.02.2007 в 15:16)   письмо автору
 
   для: AlMag   (12.02.2007 в 10:20)
 

Полный... я решил без формы обойтись... в $calc содержится выражение для вычислений

   
 
 автор: AlMag   (12.02.2007 в 16:30)   письмо автору
 
   для: kasmanaft   (12.02.2007 в 15:16)
 

мда... ))
Надо мне подучить регулярные выражения, а то разобрать Ваш скрипт не могу... ))
(1-5+(7/7))*(7+3) на этот тест выводит неверный ответ... Наверное потому, что (7/7)

   
 
 автор: kasmanaft   (12.02.2007 в 18:47)   письмо автору
 
   для: 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))" уже не прокатит...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования