fork download
  1. <?php
  2.  
  3.  
  4. $input = '6/2=';
  5. //Вводим переменные $number-вводимое число, $result-результат предыдущих действий, $operation- предыдущая операция
  6. $number = 0;
  7. $result = 0;
  8. $operation = '';
  9.  
  10. $lenght = strlen($input);
  11. //Перебираем строку посимвольно
  12. for ($i = 0; $i < $lenght; $i++) {
  13. $symbol = substr($input, $i, 1);
  14. //Если $symbol является цифрой, то к предыдущее значение $symbol умножаем на 10 (увеличиваем разряд) и прибавляем $symbol
  15. if (is_numeric($symbol)) {
  16. $number = ($number * 10) + $symbol;
  17. } /*Иначе, если $symbol не является цифрой, а предыдущая операция еще не определена, $result=$number (нужно для
  18.   сохранения в памяти первого числа. Обнуляем $number, определяем $operation*/
  19. elseif (!is_numeric($symbol) and $operation == '') {
  20. $result = $number;
  21. $number = 0;
  22. $operation = $symbol;
  23. }
  24. //Если $symbol не цифра, а $operation ранее определена, выполняем действие//
  25. if (!is_numeric($symbol) and $operation != '') {
  26.  
  27. if ($operation == '+') $result = $result + $number;
  28. if ($operation == '-') $result = $result - $number;
  29. if ($operation == '*') $result = $result * $number;
  30. if ($operation == '/') $result = $result / $number;
  31. //После выполнения действия обнуляем $number и присваиваем $operation новое значение
  32. $number = 0;
  33. $operation = $symbol;
  34. }
  35. //Если $symbol - знак равно, выводим результат ранее выполненных операций
  36. if ($symbol == '=') {
  37. echo($result);
  38. }
  39. }
Success #stdin #stdout #stderr 0.02s 24616KB
stdin
Standard input is empty
stdout
INF
stderr
PHP Warning:  Division by zero in /home/pgNs7C/prog.php on line 30