fork(1) download
  1. <?php
  2.  
  3. $input = '-243-13.5+9/2=';
  4. $result = 0;
  5. $regexp = '!([0-9\\.]+)!';
  6.  
  7. $example = preg_split($regexp, $input, 0, PREG_SPLIT_NO_EMPTY|
  8. PREG_SPLIT_DELIM_CAPTURE);
  9.  
  10. $op = '+';
  11.  
  12. foreach ($example as $key => $number)
  13. if (preg_match($regexp, $number)) {
  14. switch($op) {
  15. case '+':
  16. $result += (float)$number;
  17. break;
  18. case '-':
  19. $result -= (float)$number;
  20. break;
  21. case '*':
  22. $result *= (float)$number;
  23. break;
  24. case '/':
  25. $result /= (float)$number;
  26. break;
  27. case '=':
  28. echo "Знак '=' должен быть в конце выражения";
  29. exit();
  30. default:
  31. echo "Неподходящий символ $number";
  32. exit();
  33. };
  34. }
  35. elseif ($number === "=" and $key + 1 === count($example)) {
  36. echo "Ответ: ", $input, $result; exit();}
  37. else
  38. $op = $number;
  39.  
  40.  
Success #stdin #stdout 0.01s 24448KB
stdin
Standard input is empty
stdout
Ответ: -243-13.5+9/2=-123.75