fork download
  1. <?php
  2.  
  3. /* Я у мамы калькулятор */
  4. $input = '2+10-1+5*5=';
  5. $inputLength = mb_strlen($input);
  6.  
  7. $number = 0; /* Текущее число, которое набирает пользователь */
  8. $result = 0; /* Результат предыдущих действий */
  9. $op = ''; /* Предыдущая операция (+,-,*) */
  10.  
  11. for ($i = 0; $i < $inputLength; $i++) {
  12. $char = mb_substr($input, $i, 1);
  13. if ($char == '*' || $char == '+' || $char == '-' || $char == '=') {
  14. intval($number);
  15. echo "op=[{$op}], result = [{$result}], number = [{$number}], char = [{$char}]\n";
  16. if ($op == '+') {
  17. $result = $result + $number;
  18. $number = 0;
  19. $op = $char;
  20. }
  21. elseif ($op == '-') {
  22. $result = $result - $number;
  23. $number = 0;
  24. $op = $char;
  25. }
  26. elseif ($op == '*') {
  27. $result = $result * $number;
  28. $number = 0;
  29. $op = $char;
  30. }
  31. else {
  32. $op = $char;
  33. $result = $number;
  34. $number = 0;
  35. }
  36. if ($char == '=') {
  37. echo "Результат: {$result}\n";
  38. exit();
  39. }
  40. }
  41. elseif (is_numeric($char)) {
  42. $number = $number * 10 + $char;
  43. }
  44. else {
  45. echo "Неверный символ: '$char'\n";
  46. }
  47. }
Success #stdin #stdout 0.02s 24448KB
stdin
Standard input is empty
stdout
op=[], result = [0], number = [2], char = [+]
op=[+], result = [2], number = [10], char = [-]
op=[-], result = [12], number = [1], char = [+]
op=[+], result = [11], number = [5], char = [*]
op=[*], result = [16], number = [5], char = [=]
Результат: 80