<?php $input = '10.512/2.5*3.500+2-100='; // use dot as decimal mark $number = 0; $result = 0; $op = ''; for ($i = 0; $i < $inputLength; $i++) { if ($char == '*' || $char == '/' || $char == '+' || $char == '-' || $char == '=') { echo "op=[$op], result=[$result], number=[$number], char=[$char]\n"; $result = $number; } switch ($op) { case '*': $result = $result * $number; break; case '+': $result = $result + $number; break; case '-': $result = $result - $number; break; case '/': $result = $result / $number; break; } $op = $char; if ($op == '=') { echo "Ответ: $input$result"; } $number = 0; $number .= $char; } else { echo "Неверный символ: '$char'\n"; } }
Standard input is empty
op=[], result=[0], number=[10.512], char=[/] op=[/], result=[10.512], number=[2.5], char=[*] op=[*], result=[4.2048], number=[3.5], char=[+] op=[+], result=[14.7168], number=[2], char=[-] op=[-], result=[16.7168], number=[100], char=[=] Ответ: 10.512/2.5*3.500+2-100=-83.2832