• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kreisrechner rechnet nur Durchmesser

aJunkie

Mitglied
Hallo,

mein Kreisrechner rechnet nur, wenn der Durchmesser angegeben wird.
Aber wenn ein anderer Wert, zum Beispiel radius, eingegeben wird, kommt dabei überall eine 0 raus.

Siehe selbst.

PHP:
<h1>Kreisrechnung</h1>
<?php
    if (isset($_REQUEST['checken']) && $_REQUEST['checken'] == "done")
    {
        
    $radius = $durchmesser / 2;
    $durchmesser = $radius * 2;
    $umfang = 2 * pi() * $radius;
    $finhalt = pi() * $radius*$radius;

    }
?>
<p align="center" style="font-weight:bold;">Kreis berechnen.</p>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
  <table>
    <tr>
      <td>Radius (r)</td>
      <td><input type="text" name="radius" value="<?php echo $radius; ?>"></td>
    </tr>
    <tr>
      <td>Durchmesser (d)</td>
      <td><input type="text" name="durchmesser" value="<?php echo $durchmesser; ?>"></td>
    </tr>
    <tr>
      <td>Umfang (u)</td>
      <td><input type="text" name="umfang" value="<?php echo $umfang; ?>"></td>
    </tr>
    <tr>
      <td>Flächeninhalt (A)</td>
      <td><input type="text" name="finhalt" value="<?php echo $finhalt; ?>"></td>
    </tr>
    <tr><td><input type="hidden" name="checken" value="done"><input type="submit" value="Berechnen"></td></tr>
  </table>
</form>

Weiß jemand Rat?
 
Hallo,
schau dir doch mal deine Formeln an:
PHP:
    $radius = $durchmesser / 2;
    $durchmesser = $radius * 2;
    $umfang = 2 * pi() * $radius;
    $finhalt = pi() * $radius*$radius;

Die Rechnungen können nur mit dem Durchmesser funktionieren, da alle auf diesen aufbauen. Die willst du $radius ohne $durchmesser ausrechnen, wenn in der Formel für den Radius der Durchmesser vorkommt? Und wenn $radius nicht richtig ist, kann $umfang auch nicht berechnet werden, genausowenig wie $finhalt.
Du musst das Ganze mit If-Abfragen steuern. Heißt, du kannst bestimmte Größen nur ausrechnen, wenn auch bestimmte Daten angegeben werden.

MfG Icy
 
Die Rechnungen können nur mit dem Durchmesser funktionieren, da alle auf diesen aufbauen

Bei aJunkie beruhren die Rechnungen doch auf dem Radius und nicht auf dem Durchmesser.
So oder so wird eins von beiden benötigt, um den Umfang oder den Inhalt zu verrechnen.

Eigentlich benötigt er nur einer If-Abfrage, welche mittels else if (also eigentlich mehreren) erweitert werden kann.
Jedoch müssen die Rechnungen dann umgeformt werden.

Gibt es eigentlich eine art "solve" Funktion in PHP?
 
Bei aJunkie beruhren die Rechnungen doch auf dem Radius und nicht auf dem Durchmesser.
So oder so wird eins von beiden benötigt, um den Umfang oder den Inhalt zu verrechnen.

Da der Radius in der ersten Zeile wiederum auch auf dem Durchmesser aufbaut, bauen alle anderen auch darauf auf ;)

MfG Icy
 
Hmmm...

Muss ich jetzt 4 Mal prüfen, was gegeben ist?
Wenn radius gegeben ist, alles darauf bauen. Und bei durchmesser, nur mit durchmesser rechnen?
Bei den anderen beiden genau so?
 
$radius = $durchmesser / 2;
$durchmesser = $radius * 2;

Da der Radius in der ersten Zeile wiederum auch auf dem Durchmesser aufbaut, bauen alle anderen auch darauf auf :wink:
wohl war aber in der zweiten zeile wird der radius mittels 2 multipliziert um den durchmesser zu erhalten. eigentlich "unnötig" da man nur eins von beiden benötigt.

wie dem auch sei, das problem liegt darin, dass der rechner nur nullen auspuckt wenn nur der radius angegeben wird.
ich meine wie schon gesagt, auch wenn nur der flaecheninhalt gegeben ist, kann daraus der radius, durchmesser als auch der umfang berechnet werden.

es bedarf dazu ein paar fallunterscheidungen.
wenn der umfang geben ist, muss die formel fuer den umfang umgebaut werden, damit man den radius erhaelt:

$radius = $umfang/(2*pi());


um dir genau weiterhelfen zu koennen, muessten wir genau wissen, was du machen willst.
 
Also ich mag, dass irgendein Wert angegeben wird, Umfang, Durchmesser, Radius und Flächeninhalt, sodass er die anderen drei leeren Felder berechnet.
 
hmm wenn ich das richtig sehe, musst du ueberpruefen, WELCHER wert gegeben ist.
wenn Umfang gegeben ist, ist ja logisch das er die anderen Variablen nicht ausrechnen kann.
Du muesstest dann fuer jede gebene Variable die Formeln umrechnen, damit das ganze funktioniert.

Was willst du machen wenn jemand 2 Wert angegeben hat?
 
:D na gut das liegt bei dir, jedoch ist das ehrlich gesagt keine saubere loesung.
was man noch machen koennte wenn mehrere Werte angegeben wurden, ist eine verschachtelte if abfrage.
das waere jedoch eine ganze menge arbeit und nicht sehr sinnvoll.
 
So, die Fallentscheidungen habe ich schonmal.
Es rechnet auch.

Script:

PHP:
<?php
    if (isset($_REQUEST['checken']) && $_REQUEST['checken'] == "done")
    {
    if ($radius) {
    $umfang = 2 * pi() * $radius;
    $finhalt = pi() * $radius*$radius;
    $durchmesser = $radius * 2;
    }
    
    elseif ($durchmesser) {
    $radius = $durchmesser / 2; 
    $finhalt = pi() * $radius*$radius;
    $umfang = 2 * pi() * $radius;
    }
    
    elseif ($umfang) {
    $radius = $umfang/(2*pi());
    $durchmesser = $radius * 2;
    $finhalt = pi() * $radius*$radius;
    }
    
    elseif ($finhalt) {
    $radius = $finhalt / pi();
    $radius = sqrt($radius);
    $durchmesser = $radius * 2;
    $umfang = 2 * pi() * $radius;
    }

    }
?>
 
Zurück
Oben