60 OR !$test) { ?>
1, '-' => 1, '*' => 2, '/' => 2, '^' => 3); return $prior[$op]; } function error($msg, $code) { echo 'Błąd '.$code.': '.$msg.'
'; } function onp_1($in) { $err = array('10' => 'Nierozpoznany znak', '11' => 'Nieprawidłowa ilość nawiasów'); $out = array(); $stos = array(); $tmp = ''; $in = str_split($in); foreach($in as $v) { if(is_numeric($v) OR $v==',' OR $v=='.') { if($v==',') $v = '.'; $tmp .= $v; } elseif($v=='(') { if(!empty($tmp)) { $out[] = $tmp; $tmp = ''; } array_push($stos, '('); } elseif($v==')') { if(!empty($tmp)) { $out[] = $tmp; $tmp = ''; } while(TRUE) { $wyr = array_pop($stos); if($wyr==NULL) { error($err['11'], 11); die(11); } if($wyr!=='(') { $out[] = $wyr; } else { break; } } } elseif($v=='+' OR $v=='-' OR $v=='*' OR $v=='/') { $tmp_prior = prior($v); if(!empty($tmp)) { $out[] = $tmp; $tmp = ''; } while(TRUE) { $wyr = array_pop($stos); if($wyr==NULL) { array_push($stos, $v); break; } elseif(prior($wyr)<$tmp_prior) { array_push($stos, $wyr, $v); break; } else { $out[] = $wyr; } } } elseif($v=='^') { if(!empty($tmp)) { $out[] = $tmp; $tmp = ''; } array_push($stos, $v); } elseif($v==' ') { continue; } else { error($err['10'].': \''.$v.'\', kod: '.ord($v), 10); } } if(!empty($tmp)) { $out[] = $tmp; $tmp = ''; } while(TRUE) { $wyr = array_pop($stos); if($wyr==NULL) { break; } else { $out[] = $wyr; } } return $out; } function onp_2($in) { $stos = array(); foreach($in as $val) { if(is_numeric($val)) { array_push($stos, $val); } else { $a = array_pop($stos); $b = array_pop($stos); switch($val) { case '+': array_push($stos, bcadd($b, $a, 10)); break; case '-': array_push($stos, bcsub($b, $a, 10)); break; case '*': array_push($stos, bcmul($b, $a, 10)); break; case '/': array_push($stos, bcdiv($b, $a, 10)); break; case '^': array_push($stos, bcpow($b, $a, 10)); break; default: error('Nierozpoznany znak: '.$val, 10); break; } } } return array_pop($stos); } $res1 = onp_1($_GET['wyrazenie']); $res2 = onp_2($res1); ?>