PHP :: Aufgabe #198
4 Lösungen
Body-Mass-Index (BMI)
Anfänger - PHP
von hollst
- 20.11.2018 um 18:23 Uhr
Der BMI ist eine (umstrittene) Kenngröße zur Ermittlung des eigenen Über-/Untergewichtszustandes:
BMI = Körpermasse (kg) / Körpergröße zum Quadrat (m**2).
Er wird wie folgt interpretiert:
Starkes Untergewicht < 16
Mäßiges Untergewicht 16 – < 17
Leichtes Untergewicht 17 – < 18,5
Normalgewicht 18,5 – < 25
Präadipositas 25 – < 30
Adipositas Grad I 30 – < 35
Adipositas Grad II 35 – < 40
Adipositas Grad III ≥ 40
Man schreibe ein Programm, das die zwei Basisdaten (Körpermasse und Körpergröße) entgegennimmt und den
Zustand (Starkes Untergewicht, Mäßiges Untergewicht ... Adipositas Grad III) als Ergebnis mitteilt.
Viel Spaß!
BMI = Körpermasse (kg) / Körpergröße zum Quadrat (m**2).
Er wird wie folgt interpretiert:
Starkes Untergewicht < 16
Mäßiges Untergewicht 16 – < 17
Leichtes Untergewicht 17 – < 18,5
Normalgewicht 18,5 – < 25
Präadipositas 25 – < 30
Adipositas Grad I 30 – < 35
Adipositas Grad II 35 – < 40
Adipositas Grad III ≥ 40
Man schreibe ein Programm, das die zwei Basisdaten (Körpermasse und Körpergröße) entgegennimmt und den
Zustand (Starkes Untergewicht, Mäßiges Untergewicht ... Adipositas Grad III) als Ergebnis mitteilt.
Viel Spaß!
Lösungen:
PHP-Code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>BMI - Berechnung</title> </head> <body> <?php if($_SERVER["REQUEST_METHOD"] == "POST"){ $masse = $_POST["masse"]; $groesse = $_POST["groesse"]; $bmi = round($masse / ($groesse ** 2), 2); $ergebnis; if(isbetween(0, 16, $bmi)){ $ergebnis = "Starkes Untergewicht"; } elseif(isbetween(16, 17, $bmi)){ $ergebnis = "Mäßiges Untergewicht"; } elseif(isbetween(17, 18.5, $bmi)){ $ergebnis = "Leichtes Untergewicht"; } elseif(isbetween(18.5, 25, $bmi)){ $ergebnis = "Normalgewicht"; } elseif(isbetween(25, 30, $bmi)){ $ergebnis = "Präadipositas"; } elseif(isbetween(30, 35, $bmi)){ $ergebnis = "Adipositas Grad I"; } elseif(isbetween(35, 40, $bmi)){ $ergebnis = "Adipositas Grad II"; } elseif($bmi >= 40){ $ergebnis = "Adipositas Grad III"; } } function isbetween($min, $max, $value){ if($min <= $value && $max > $value){ return TRUE; } else{ return FALSE; } } ?> <div> <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST"> <div style="margin-bottom: 10px;"> <label>Körpermasse (in kg)</label> <div> <input type="number" step="0.01" name="masse"> </div> </div> <div style="margin-bottom: 10px;"> <label>Körpergröße (in m)</label> <div> <input type="number" step="0.01" name="groesse"> </div> </div> <button type="submit">Berechne BMI</button> </form> </div> <h1><?php if(!empty($ergebnis)) { echo "BMI: " .$bmi ." - " .$ergebnis; } ?></h1> </body> </html>
PHP-Code
<html> <head> <style typ="text/css"> .formular {width: 330px} .formular .label {width: 150px; margin-right: 5px; float: left; } .formular .feuerfrei {width: 300px; margin-top: 5px; } </style> </head> <body> <div class="formular"> <form action="" method="post"> <div class="label">Körpergröße in cm:</div> <input type="number" min="1" max="300" name="groesse"><br> <div class="label">Körpergewicht in kg:</div> <input type="text" name="gewicht"><br> <input class="feuerfrei" type="submit"> </form> </div> <?php $groesse = $_POST['groesse']/100; $gewicht = str_replace(",", ".", $_POST['gewicht']); $bmi = $gewicht / ($groesse * $groesse); $bmir = number_format(round($bmi, 2, PHP_ROUND_HALF_DOWN), 2, ',', ''); $bmiwert = array("Starkes Untergewicht" => 0, "Mäßiges Untergewicht" => 16, "Leichtes Untergewicht" => 17, "Normalgewicht" => 18.5, "Präadipositas" => 25, "Adipositas Grad I" => 30, "Adipositas Grad II" => 35, "Adipositas Grad III" => 40 ); arsort($bmiwert); if (!empty($_POST['groesse']) AND !empty($_POST['gewicht']) ) { foreach($bmiwert AS $key =>$value) { if ($bmir > $value) { echo "Der BMI Beträgt $bmir - Dies entspricht: $key"; return; } } }?> </body> </html>
PHP-Code
function bmi($height,$weigth){ $bmi = number_format($weigth / ($height * $height), 2); echo "Dein BMI-Wert liegt bei " . $bmi . ". Damit hast du "; if ($bmi < 16){ echo "Starkes Untergewicht"; }elseif($bmi < 17){ echo "Mäßiges Untergewicht"; }elseif($bmi < 18.5){ echo "Leichtes Untergewicht"; }elseif($bmi < 25){ echo "Normalgewicht"; }elseif($bmi < 30){ echo "Präadipositas"; }elseif($bmi < 35){ echo "Adipositas Grad I"; }elseif($bmi < 40){ echo "Adipositas Grad II"; }elseif($bmi >= 40){ echo "Adipositas Grad III"; } } bmi(1.74, 110);
Konsolenausgabe:
Dein BMI-Wert liegt bei 36.33. Damit hast du Adipositas Grad II
PHP-Code
<?php $bmi = calcBMI(1.74, 110); echo getBmiMessage($bmi); function calcBMI($height, $weight) { return $weight / pow($height, 2); } function getBmiMessage($bmi) { if($bmi >= 40) { return 'Adipositas Grad III'; } elseif($bmi >= 35) { return 'Adipositas Grad II'; } elseif($bmi >= 30) { return 'Adipositas Grad I'; } elseif($bmi >= 25) { return 'Präadipositas'; } elseif($bmi >= 18.5) { return 'Normalgewicht'; } elseif($bmi >= 17) { return 'Leichtes Untergewicht'; } elseif($bmi >= 16) { return 'Mäßiges Untergewicht'; } else { return 'Starkes Untergewicht'; } }