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