PHP :: Aufgabe #198

4 Lösungen Lösungen öffentlich

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ß!

Lösungen:

vote_ok
von JUnoS20 (200 Punkte) - 14.12.2018 um 14:31 Uhr
Quellcode ausblenden 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>
vote_ok
von Acta (320 Punkte) - 29.01.2019 um 09:33 Uhr
Quellcode ausblenden 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>


vote_ok
von pornstarIRL (410 Punkte) - 18.11.2019 um 10:35 Uhr
Quellcode ausblenden 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
vote_ok
von Exception (7090 Punkte) - 02.12.2019 um 18:08 Uhr
Quellcode ausblenden 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';
  }
}
1810887

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.