- var_dump: documentation ( source)
- abs: documentation ( source)
- ceil: documentation ( source)
- range: documentation ( source)
<?php
// $A = 1110;
// $B = 370;
// $C = 6171.6;
// $H = 71.1;
// $I = 556/$G; // Muss "4,21212121212121" ausgeben
// $K = get_factor_K($I); // I wird benötigt. Gibt in diesem Beispiel "0,9942" aus
// $L = get_factor_L($I); // I wird benötigt. Gibt in diesem Beispiel "0,998670248976177" aus
// $G = $H/(545.223880597015/1000*$L*$K); // Aufrundung ohne Komma, muss "132" ausgeben
// $J = $G*$B/1000*$A/100*1; // Muss "542,124" ausgeben
// $D = ($C-$J); // Muss "5629,476" ausgeben
// $E = ($I-$B/1000)*$A/100; // Muss "42,6475454545455" ausgeben
// $F = $I*$A/100; // Muss "46,7545454545455" ausgeben
function get_factor_k($i)
{
// Replace with correct code
#return $i;
return 0.9942;
}
function get_factor_l($i)
{
// Replace with correct code
#return $i;
return 0.998670248976177;
}
$a = 1110;
$b = 370;
$c = 6171.6;
$h = 71.1;
$i = 0.001; // undef
$k = 0; // undef
$l = 0; // undef
$step = 0.001; // Auflösung für $i
$i_max = 100; // um keine Endlosschleife zu produzieren
$epsilon = 0.001; // Fehlertoleranz
$found = false;
do {
$k = get_factor_k($i);
$l = get_factor_l($i);
$tmp = (556 / ($h / (545.223880597015 / 1000 * $k * $l)));
$found = (abs($i - $tmp) <= $epsilon);
if (!$found) {
$i += $step;
}
if ($i > $i_max) {
throw new Exception('Unable to calculate $i');
}
} while (!$found);
$g = ceil($h / (545.223880597015 / 1000 * $l * $k));
#$i = 556 / $g; // ??? $i haben wir schon
$j = $g * $b / 1000 * $a / 100 * 1;
$e = ($i - $b / 1000) * $a / 100;
$f = $i * $a / 100;
$d = $c - $j;
foreach (range('a', 'l') as $var) {
echo $var . ' = ';
var_dump($$var);
}