среда, 1 июня 2016 г.

Обратная польская запись

Reverse Polish notation

Обратная польская нотация (ОПН) 
описание на вики

код PHP


<?php function polish($input){
$input=str_replace(" ","",$input);
for($i=0;$i<strlen($input);$i++){
 if(is_numeric($input[$i])){
  $stack[]=$input[$i];
  }
 else {
   $n2 = array_pop($stack);
   $n1 = array_pop($stack);
   switch($input[$i]) {
    case '+': $result = $n1 + $n2; break;
    case '-': $result = $n1 - $n2; break;
    case '*': $result = $n1 * $n2; break;
    case '/': $result = $n1 / $n2; break;
    default: echo "Ощибка ввода!\n";
   }
   array_push($stack,$result);
  }
 }
 return array_pop($stack);
}

echo polish("5 8 3 + *");?>

Комментариев нет:

Отправить комментарий