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