hallo zusamen,
habe ein problem und zwar will ich einen Taschenrechner in php schreiben.habe auch schon einen Teil hin bekommen nur leider weiß ich nicht wie ich dem Programm sage das er was in Klammern steht als erstes ausrechnen soll....
Kann mir vielleicht jemand helfen???
Über gute Vorschläge würde ich mich sehr freuen...
habe ein problem und zwar will ich einen Taschenrechner in php schreiben.habe auch schon einen Teil hin bekommen nur leider weiß ich nicht wie ich dem Programm sage das er was in Klammern steht als erstes ausrechnen soll....
Kann mir vielleicht jemand helfen???
PHP-Code:
<?PHP
$eq = $HTTP_POST_VARS["equation"];
print calc($eq);
function calc($eq){
$tmp = splitEq($eq);
for($i = 0;$i<sizeof($tmp);$i++){
$result += calc2($tmp[$i]);
}
return $result;
}
function calc2($eq){
$tmp = splitEq($eq, "*", "/");
$result = $tmp[0];
for($i = 0;$i<sizeof($tmp);$i++){
if($tmp[$i][0] == "*")
$result *= substr($tmp[$i],1);
if($tmp[$i][0] == "/")
$result /= substr($tmp[$i],1);
}
return $result;
}
function splitEq($eq, $op1 = "+", $op2 = "-"){
$i = splitPos($eq, $op1, $op2);
$tmp = array();
while($i>0){
$tmp[] = substr($eq, 0, $i);
$eq = substr($eq, $i);
$i = splitPos($eq, $op1, $op2);
}
if (strlen($eq)>0)
$tmp[] = $eq;
return $tmp;
}
function splitPos($s, $op1, $op2, $b=1){
for($i=$b;$i<=strlen($s);$i++){
if ($s[$i] == $op1 || $s[$i] == $op2)
return $i;
}
}
// echo " ist das Ergebnis".$result; /
?>
Kommentar