function set_var(&$var)
{
$var=preg_replace("/[^0-9]*/i", "",$var);
if(empty($var))
$var=0;
}
einfach auf alle Feldvariablen anwenden…
set_var($a);
das macht folgendes:
1.) Alle nichtnummerischen Zeichen entfernen
2.) Wenn der es leer ist, einfach auf 0 setzen (das darf man ja)
Danke!!!
Ich probiers aus!
So´n mist! Ich will dass die Rechenoperation automatisch aubgebrochen wird wenn $var=0 (also Feld leer is) ist.
Geht aber irgendwie nich!
Hier ist der Quellext:
<?php
//Eingaben werden ausgelesen
$x1 = $_POST['x1'];
$x2 = $_POST['x2'];
$x3 = $_POST['x3'];
$y1 = $_POST['y1'];
$y2 = $_POST['y2'];
$y3 = $_POST['y3'];
$z1 = $_POST['z1'];
$z2 = $_POST['z2'];
$z3 = $_POST['z3'];
$e1 = $_POST['e1'];
$e2 = $_POST['e2'];
$e3 = $_POST['e3'];
//Sind die Felder ausgefüllt? Wenn ja weiter zu Außnahmen. Wenn nicht Variable $neu aktiviert (Neue Eingabe). Danach wird auf allgemeingültig- und/oder unlösbarkeit geprüft.
set_var($x1);
set_var($x2);
set_var($x3);
set_var($y1);
set_var($y2);
set_var($y3);
set_var($z1);
set_var($z2);
set_var($z3);
set_var($e1);
set_var($e2);
set_var($e3);
function set_var(&$var) {
$var=preg_replace("/[^0-9]*/i", "",$var);
if(empty($var)) $var=0 ; }
if ($var == "0") { echo "
Bitte alle Felder ausfüllen!
Für Neueingabe
Hier klicken!"; }
elseif ((($x1 == $x2) and ($y1 == $y2) and ($z1 == $z2) and ($e1 == $e2)) or (($x1 == $x3) and ($y1 == $y3) and ($z1 == $z3) and ($e1 == $e3)) or (($x2 == $x3) and ($y2 == $y3) and ($z2 == $z3) and ($e2 == $e3))) {
echo "
IL = {}
Das Ergebnis ist allgemeingültig!
Für Neueingabe
Hier klicken.
"; }
elseif ((($x1 == $x2) and ($y1 == $y2) and ($z1 == $z2)) or (($x1 == $x3) and ($y1 == $y3) and ($z1 == $z3)) or (($x2 == $x3) and ($y2 == $y3) and ($z2 == $z3)) or (($x1 == $x2) and ($x1 == $x3) and ($y1 == $y2) and ($y1 == $y3)) or (($z1 == $z2) and ($z1 == $z3) and ($y1 == $y2) and ($y1 == $y3)) or (($z1 == $z2) and ($z1 == $z3) and ($x1 == $x2) and ($x1 == $x3))) {
echo "
Die Aufgabe ist unlösbar!
Für Neueingabe
Hier klicken.
"; }
else {
//11-Reihe
$x11 = $x1 * $x2 - $x2 * $x1;
$y11 = $y1 * $x2 - $y2 * $x1;
$z11 = $z1 * $x2 - $z2 * $x1;
$e11 = $e1 * $x2 - $e2 * $x1;
//21-Reihe
$x21 = $x2 * $x3 - $x3 * $x2;
$y21 = $y2 * $x3 - $y3 * $x2;
$z21 = $z2 * $x3 - $z3 * $x2;
$e21 = $e2 * $x3 - $e3 * $x2;
//22-Reihe
$x22 = $x11 * $y21 - $x21 * $y11;
$y22 = $y11 * $y21 - $y21 * $y11;
$z22 = $z11 * $y21 - $z21 * $y11;
$e22 = $e11 * $y21 - $e21 * $y11;
//Ausrechnung von Unbekannter 'Z'
$zend = $e22 / $z22;
//Ausrechnung von Unbekannter 'Y'
$yend = ($e21 - $z21 * $zend) / $y21;
//Ausrechnung von Unbekannter 'X'
$xend = ($e1 - $y1 * $yend - $z1 * $end) / $x1;
echo "
IL = {(X/Y/Z)|$xend/$yend/$zend)}
Für Neueingabe
Hier klicken.
";
}
?>
meine Funktion macht ja das:
ich glaube davon kann man gut ausgehen…
außerdem gibt es nach der Funktion kein $var mehr…
PS: Iwie ist dein Code enorm unsauber… ich versuche gerade deinen Code auf belibig viele unbekannte auszubauen…so weit bin ich (ungetestet)
<?php
function set_var(&$var, $key, &$empty)
{
$var=preg_replace("/[^0-9]*/i", "",$var);
if(!$var)
{
$empty=true;
$var=0;
}
}
function make_pair($count)
{
$array=array();
for($i=0; $i<$count; $i++)
for($j=$i; $j<$count; $j++)
$array[]=array($i, $j);
return $array;
}
function check_vars($array)
{
$temp1=array_keys($array);
$temp2=make_pair(count($array));
foreach($temp1 as $n)
{
$abort=0;
foreach($temp2 as $i)
if($array[$n][$i[0]]==$array[$n][$i[1]])
$abort++;
$abort-=count($array)-2;
if($abort>0)
return $abort;
}
return 0;
}
$vars = array(
"x" => array($_POST['x1'], $_POST['x2'], $_POST['x3']),
"y" => array($_POST['y1'], $_POST['y2'], $_POST['y3']),
"z" => array($_POST['z1'], $_POST['z2'], $_POST['z3']),
"e" => array($_POST['e1'], $_POST['e2'], $_POST['e3'])
);
$empty=false;
array_walk_recursive($vars, "set_var",$empty);
if ($empty)
echo "<div align=\"center\"><span style=\"color:red;\">Nicht alle Felder ausgefüllt, 0 wurde angenommen</span></div>";
$check=check_vars($vars);
if ($check==2)
echo "<div align=\"center\"><span style=\"color:orange;\">IL = {}<br>Das Ergebnis ist allgemeingültig!</span></div><div align=\"center\">Für Neueingabe <a href=\"javascript:history.back();\">Hier</a> klicken.</div>";
elseif ($check==2)
echo "<div align=\"center\"><span style=\"color:red;\">Die Aufgabe ist unlösbar!</span></div><div align=\"center\">Für Neueingabe <a href=\"javascript:history.back();\">Hier</a> klicken.</div>";
else {
//Naja, fehlt noch :S
}
Danke!!!
Nicht vergessen es geht hier um den Gauschalgorithmaus.
Krieg ich´n das verbesserte Script?
wenn du willst…musst hald deinen Algo noch für ein Array umschreiben