Body-Mass-Index (Selektionen)
Der BMI (Body-Mass-Index) bewertet das Körpergewicht eines Menschen im Verhältnis zum Quadrat seiner Größe.
BMI = kg / m2
Folgende Indizien werden vorgeschlagen:
w | m | Klassifikation |
< 19 | < 20 | Untergewicht |
19-24 | 20-25 | Normalgewicht |
> 24 | > 25 | Übergewicht |
Schreiben Sie ein Programm, bei dem der Anwender sein Geschlecht (w, m), seine Masse (in kg) und seine Körpergröße (in Metern) eingeben kann. Die Ausgabe soll dann neben dem BMI auch die Klassifikation (Untergewicht, Normalgewicht bzw. Übergewicht) enthalten.
Bemerkung: Der BMI berücksichtigt nicht den Körperfettanteil und kann daher nur begrenzt Aussagen zur Gesundheit machen. Ein moderneres Indiz zu Über- und Untergewicht liefert das Taille-zu-Höhe-Verhältnis (Waist to Height Ratio).
0 Kommentare
13 Lösung(en)
/***** bmi.xhtml ******/
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns ="http://www.w3.org/1999/xhtml"
lang = "en"
xml:lang = "en">
<head>
<title>BMI</title>
<script type = "text/javascript"
src = "bmi.js" />
<meta http-equiv = "Content.Type"
content = "text/html;charset=utf-8" />
</head>
<body>
<p>Ihr Gewicht <input id="gewicht" name="gewicht" type="text" size="15" /></p>
<p>Ihre Grösse in m (z.B 1.62) <input id="groesse" type="text" size="15" /></p>
<p>Ihr Geschlecht <input name="geschlecht" type="radio" value="w" /> Weiblich
<input name="geschlecht" type="radio" value="m" /> Männlich </p>
<p><input id="ausrechnen" name="ausrechnen" type="button" value="BMI ausrechnen"
onclick="ausrechnen()" /></p>
<p>Ihr Bodymassindex beträgt: <input id="bmi" name="bmi" type="text" size="2" />
<input id="kommentar" name="kommentar" type="text" size="30" /> </p>
</body>
</html>
/***************** File bmi.js ********************/
?/* Anja Gloor / ph. gressly: 11.Mai.2010*/
function ausrechnen()
{
var groesseElement = document.getElementById("groesse");
var groesse = groesseElement.value;
var gewichtElement = document.getElementById("gewicht");
var gewicht = gewichtElement.value;
var geschlecht = leseGeschlecht();
var bmiElement = document.getElementById("bmi");
var kommentarElement = document.getElementById("kommentar");
bmiausgerechnet = gewicht / (groesse * groesse)
bmiElement.value = bmiausgerechnet.toFixed(2);
satz1 = ("Sie sind untergewichtig")
satz2 = ("Sie sind normalgewichtig")
satz3 = ("Sie sind übergewichtig")
satz4 = ("Sie sind Adipositas")
if ('w' == geschlecht)
{
if (bmiausgerechnet < 20)
{
kommentarElement.value = satz1;}
else if (bmiausgerechnet < 25)
{
kommentarElement.value = satz2;}
else if (bmiausgerechnet < 30)
{
kommentarElement.value = satz3;}
else
{
kommentarElement.value = satz4;}
}
else // geschlecht = 'm'
{
if (bmiausgerechnet < 19)
{
kommentarElement.value = satz1;}
else if (bmiausgerechnet < 24)
{
kommentarElement.value = satz2;}
else if (bmiausgerechnet < 30)
{
kommentarElement.value = satz3;}
else
{
kommentarElement.value = satz4;}
}
}
function leseGeschlecht() {
var alleInputFelder = document.getElementsByTagName("input");
var i = 0;
while(i < alleInputFelder.length) {
if('radio' == alleInputFelder[i].type) {
if(alleInputFelder[i].checked) {
return alleInputFelder[i].value;
}
}
i = i + 1;
}
return 'n';
}
bmi = gewicht/(groesse*groesse)
satz1 = 'Sie sind untergewichtig'
satz2 = 'Sie sind normalgewichtig'
satz3 = 'Sie sind übergewichtig'
satz4 = 'Sie sind Adipositas'
print 'Ihr BMI ist '+str(bmi)
print ''
if (gender == 'w'):
if bmi < 19:
print satz1
else:
if bmi < 24:
print satz2
else:
if bmi < 29:
print satz3
else:
print satz4
if (gender == 'm'):
if bmi < 20:
print satz1
else:
if bmi < 25:
print satz2
else:
if bmi < 30:
print satz3
else:
print satz4
else:
print 'Sie haben das Geschlecht nicht korrekt eingegeben.'
gender = raw_input('Ihr Geschlecht [m/w]:')
gewicht = float(raw_input('Ihr Gewicht in kg:'))
groesse = float(raw_input('Ihre Grösse in m:'))
bmi(gewicht,groesse,gender)
Lösung von: Martin Guggisberg (Universität Basel / PH FHNW)
/* Programmiersprache: PL/I */
/* Autor: Bruno Keller */
A#3_7: proc() returns(bin fixed(31));
dcl (index
,tally
,divide
,multiply
,round) builtin;
dcl theAnswer char(200) var;
dcl RC bin fixed(31) init(0);
dcl w bit(1) init('0'b);
dcl Gewicht dec fixed(7,3);
dcl Groesse dec fixed(3,2);
dcl BMI dec fixed(3);
dcl BMI_pic pic'zz9';
dcl BMI_help dec fixed(5,1);
dcl Grenze_1 dec fixed(3);
dcl Grenze_2 dec fixed(3);
dcl Klassifikation(3) char(25) init('Sie sind untergewichtig. '
,'Sie sind normalgewichtig.'
,'Sie sind uebergewichtig. ');
/*----------------*/
/* Start Programm */
/*----------------*/
display('Body-Mass-Index');
display('---------------');
/*-----------------------*/
/* Geschlecht übernehmen */
/*-----------------------*/
display('Geben Sie bitte Ihr Geschlecht ein (m/w):')
reply(theAnswer);
if index(theAnswer,'w')^=0 ! index(theAnswer,'W')^= 0
then w = '1'b;
else do;
if index(theAnswer,'m')^=0 ! index(theAnswer,'M')^= 0
then;
else do;
RC=-1;
call ERROR_Msg(RC);
return(RC);
end;
end;
/*--------------------*/
/* Gewicht übernehmen */
/*--------------------*/
display('Geben Sie bitte Ihr Koerpergewicht (in nnn.nnn kg) ein:')
reply(theAnswer);
if verify(theAnswer,'0123456789.')=0 & tally(theAnswer,'.')<2
then Gewicht = theAnswer;
else do;
RC=-2;
call ERROR_Msg(RC);
return(RC);
end;
/*-------------------*/
/* Grösse übernehmen */
/*-------------------*/
display('Geben Sie bitte Ihre Groesse (in n.nn Metern) ein:')
reply(theAnswer);
if verify(theAnswer,'0123456789.')=0 & tally(theAnswer,'.')<2
then Groesse = theAnswer;
else do;
RC=-3;
call ERROR_Msg(RC);
return(RC);
end;
/*----------------------------*/
/* BMI berechnen und ausgeben */
/*----------------------------*/
BMI_help = multiply(Groesse,Groesse,5,1);
BMI_help = divide (Gewicht,BMI_help,5,1);
BMI = round (BMI_help,0);
BMI_pic = BMI;
display('Ihr BMI betraegt: ' !! BMI_pic);
/*-----------------------------------------*/
/* Klassifikation durchführen und ausgeben */
/*-----------------------------------------*/
if w then do;
Grenze_1 = 19;
Grenze_2 = 24;
end;
else do;
Grenze_1 = 20;
Grenze_2 = 25;
end;
select;
when(BMI < Grenze_1) display(Klassifikation(1));
when(BMI >= Grenze_1 & BMI <= Grenze_2) display(Klassifikation(2));
other display(Klassifikation(3));
end;
/*---------------*/
/* Ende Programm */
/*---------------*/
display('Beenden Sie das Programm mit <Enter>.')
reply(theAnswer);
return(RC);
/*----------------------------------*/
/* Internes Unterprogramm ERROR_Msg */
/*----------------------------------*/
ERROR_Msg: proc(Fehler#);
dcl Fehler# bin fixed(31);
display('-------------------------------------');
display('Fehler im Programm A#3_7: ');
select(Fehler#);
when(- 1) display('Geschlecht nicht korrekt eingegeben. ');
when(- 2) display('Gewicht nicht korrekt eingegeben. ');
when(- 3) display('Grösse nicht korrekt eingegeben. ');
other display('Unbekannter Fehler. ');
end;
display('Starten Sie das Programm neu. ');
display('-------------------------------------');
end ERROR_Msg;
end A#3_7;
Lösung von: Bruno Keller (Santis Training AG)
// Language: Haskell / bmi.hs
data Sex = Male | Female
deriving (Eq, Show)
bmiTell :: (RealFloat a) => a -> a -> Sex -> String
bmiTell weight height Male | bmi < 20 = "Untergewicht"
| bmi < 25 = "Normalgewicht"
| otherwise = "Übergewicht"
where bmi = weight / height ^ 2
bmiTell weight height Female | bmi < 19 = "Untergewicht"
| bmi < 24 = "Normalgewicht"
| otherwise = "Übergewicht"
where bmi = weight / height ^ 2
Lösung von: Reto Hablützel (www.rethab.ch)
// phi@gress.ly April 2012
// Berechne BMI: Body Mass Index
function hauptprogramm() {
// maennlich : boolean
var maennlich = einlesenCheckedViaID("maennlich");
var groesse = einlesenZahlViaID ("groesse" );
var gewicht = einlesenZahlViaID ("gewicht" );;
var bmi = gewicht / (groesse * groesse);
var meldung = textAusBMI(bmi, maennlich);
document.getElementById("ausgabe").innerHTML = meldung;
}
function textAusBMI(bmi, maennlich) {
if(maennlich) {
bmi = bmi - 1;
}
if(bmi < 19) { return "Untergewichtig"; }
if(bmi <= 24) { return "Normalgewicht" ; }
return "Übergewicht" ;
}
function einlesenZahlViaID(id) {
var element = document.getElementById(id);
var txt = element.value;
var zahl = (+txt); // in Zahl umwandeln
return zahl;
}
function einlesenCheckedViaID(id) {
return document.getElementById(id).checked;
}
////////////////////////////// H T M L : /////////////////////////////////
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html>
<!-- phi@gress.ly April 2012 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Vorlage</title>
<meta http-equiv = "Content-Type"
content = "text/html;charset=utf-8" />
<link rel = "stylesheet"
href = "bmi.css" />
<script src="bmi.js"></script>
</head>
<body>
<h1>BMI</h1>
<p>BMI = Body Mass Index</p>
<p>Männlich: <input type="checkbox"
id="maennlich"
value="Maennlich"/> </p>
<p>Gewicht (kg): <input type="text" id="gewicht" /></p>
<p>Größe ( m): <input type="text" id="groesse" /></p>
<input type="button" value="Berechne BMI" onclick="hauptprogramm();" />
<p id="ausgabe"></p>
</body>
</html>
/////////////////////////////////////// C S S //////////////////////////////////
/* phi@gress.ly April 2012 */
body {
background-color: silver;
}
p {
font-family: verdana, arial, helvetica, sans;
color: #009;
}
@media print {
p {
font-family: times, times-new-roman, palatino, serif;
}
} /* end print */
h1 {
font-size :120%;
font-family: sans, Arial, helvetica;
text-decoration: underline;
}
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
package ch.programmieraufgaben.selektion;
import java.util.Scanner;
public class BodyMassIndex {
public static void main(String[] args) {
new BodyMassIndex().top();
}
void top() {
char geschlecht = einlesenChar("Geschlecht");
double hoehe = einlesenDouble("Höhe in Metern");
int gewicht = einlesenInt("Masse in kg");
int untergewichtsgrenze = 19;
int uebergewichtsgrenze = 24;
String ausgabe = "Normalgewicht";
if ('m' == geschlecht) {
untergewichtsgrenze = 20;
uebergewichtsgrenze = 25;
}
double bmi = gewicht / (hoehe * hoehe);
if (bmi < untergewichtsgrenze) {
ausgabe = "Untergewicht";
}
if (bmi > uebergewichtsgrenze) {
ausgabe = "Übergewicht";
}
System.out.println(ausgabe);
}
// generelle Hilfsfunktionen
Scanner sc = new Scanner(System.in);
int einlesenInt(String wert) {
meldung(wert);
return sc.nextInt();
}
double einlesenDouble(String wert) {
meldung(wert);
return sc.nextDouble();
}
char einlesenChar(String wert) {
meldung(wert);
return sc.next().toLowerCase().charAt(0);
}
void meldung(String wert) {
System.out.println("Bitte " + wert + " eingeben:");
}
} // end of class Body Mass Index
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
{$R+}
{$B+}
program BodyMass(input,output);
{FernUni Hagen}
{Bewertet Koerpergewich}
const
NORM = 'Normalgewicht';
UNTER = 'Untergewicht';
UEBER = 'Ubergewicht';
var
Gesch : string;
Masse,
Koerper,
BMI : integer;
begin
Koerper := 0;
Masse := 0;
BMI := 0;
write('Bitte geben Sie den Geschlecht ein: ');
readln(Gesch);
write('Bitte geben Sie Ihr Gewicht ein (kg): ');
readln(Masse);
write('Bitte geben Sie Ihre Koerpergroesse ein (m): ');
readln(Koerper);
BMI := Masse div (Koerper * Koerper);
if (BMI < 19) and (Gesch ='Frau') then
{Untergewicht bei Frauen}
begin
write(UNTER,' ','DMI-Index: ',BMI);
readln(); {Nur um die Konsole ausgabe zu sehen!}
end
else
if (BMI >= 19) and (BMI <=24) and (Gesch='Frau') then
{Normalgewicht bei Frauen}
begin
write(NORM,' ','DMI-Index: ',BMI);
readln(); {Nur um die Konsole ausgabe zu sehen!}
end
else
if (BMI <20) and (Gesch = 'Mann') then
{Utergewicht bei Manner}
begin
write(UNTER,' ','DMI-Index: ',BMI);
readln(); {Nur um die Konsole ausgabe zu sehen!}
end
else
if (BMI >= 20) and (BMI <= 25)and (Gesch='Mann')then
{Normalgewicht bei Manner}
begin
write(NORM,' ','DMI-Index: ',BMI);
readln(); {Nur um die Konsole ausgabe zu sehen!}
end
else
if (BMI > 24) and (Gesch='Frau') then
{Übergewicht bei Frauen}
begin
write(UEBER,' ','DMI-Index: ',BMI);
readln(); {Nur um die Konsole ausgabe zu sehen!}
end
else
if (BMI > 25) and (Gesch ='Mann')then
{Übergewicht bei Mann}
begin
write(UEBER,' ','DMI-Index: ',BMI);
readln(); {Nur um die Konsole ausgabe zu sehen!}
end
end.
Lösung von: Name nicht veröffentlicht
import java.util.Scanner;
public class BMI {
public static void main(String[] args) {
new BMI().top();
}
private void top() {
char geschlecht = einlesenChar("Geschlecht");
int gewicht = einlesenInt("Gewicht in kg");
double hoehe = einlesenDouble("Höhe in Metern");
int uggrenze = 19;
int uebggrenze = 24;
double bmi = gewicht / (hoehe * hoehe);
String resultat;
if (geschlecht == 'm') {
uggrenze = 20;
uebggrenze = 25;
}
if (bmi < uggrenze) {
resultat = "Untergewicht";
}
if (bmi > uebggrenze) {
resultat = "Übergewicht";
} else {
resultat = "Normalgewicht";
}
System.out.println(resultat);
}
Scanner bmi = new Scanner (System.in);
char einlesenChar(String wert) {
popup(wert);
return bmi.next().charAt(0);
}
int einlesenInt(String wert) {
popup(wert);
return bmi.nextInt();
}
double einlesenDouble(String wert) {
popup(wert);
return bmi.nextDouble();
}
private void popup(String wert) {
System.out.println("Bitte " + wert + " eingeben:");
}
}
Lösung von: Raphael Bosshart (ETH ZH)
geschlecht = input("Geschlecht m/w: ")
groesse = int(input("Groesse in cm: "))
gewicht = int(input("Gewicht in kg: "))
bmi = gewicht / (groesse/100 * groesse/100)
if geschlecht == "w":
if bmi < 19:
print("BMI:", round(bmi, 2), "-> Untergewicht")
elif bmi <= 24:
print("BMI:", round(bmi, 2), "-> Normalgewicht")
else:
print("BMI:", round(bmi, 2), "-> Übergewicht")
else:
if bmi < 20:
print("BMI:", round(bmi, 2), "-> Untergewicht")
elif bmi <= 25:
print("BMI:", round(bmi, 2), "-> Normalgewicht")
else:
print("BMI:", round(bmi, 2), "-> Übergewicht")
Lösung von: Peter Pan (Home Office)
function getBodyMassIndex(sex, weightInKg, heightInCm) {
let bmi = weightInKg / (heightInCm / 100) ** 2;
switch (sex) {
case 'f':
if (bmi < 19) return 'Untergewicht';
if (bmi <= 24) return 'Normalgewicht';
return 'Übergewicht';
case 'm':
if (bmi < 20) return 'Untergewicht';
if (bmi <= 25) return 'Normalgewicht';
return 'Übergewicht';
}
}
// eingabemaske
document.write(`
<label>Geschlecht: </label>
<select id="sex">
<option value="m">männlich</option>
<option value="f">weiblich</option>
</select><br>
<label>Gewicht (kg): </label><input type="number" id="weight"><br>
<label>Größe (cm): </label><input type="number" id="height"><br>
<button onclick="answer()">Berechnen</button><br>
<div id="info"> </div>
`);
function answer() {
document.getElementById('info').innerText =
'Laut BMI haben Sie ' +
getBodyMassIndex(document.getElementById('sex').value,
document.getElementById('weight').value,
document.getElementById('weight').value) + '.';
}
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// NET 6.x | C# 10.x | VS-2022
static string BMI(Sex sex, int weightKg, int heightCm) => (sex, weightKg / Math.Pow(heightCm / 100.0, 2)) switch
{
(Sex.f, < 19) or (Sex.m, < 20) => "Untergewicht",
(Sex.f, <= 24) or (Sex.m, <= 25) => "Normalgewicht",
(_, _) => "Übergewicht"
};
Console.WriteLine(BMI(Sex.f, 70, 175));
enum Sex { f, m };
Lösung von: Jens Kelm (@JKooP)
// C++ 14 | VS-2022
#include <iostream>
enum sex {
f, m
};
struct data {
sex sex;
double weight_kg, height_cm;
};
const auto get_bmi(data d) {
const auto bmi{ d.weight_kg / pow(d.height_cm / 100.0, 2) };
if (d.sex == sex::f && bmi < 19 || d.sex == sex::m && bmi < 20) return "Untergewicht";
if (d.sex == sex::f && bmi <= 24 || d.sex == sex::m && bmi <= 25) return "Normalgewicht";
return "Uebergewicht";
}
int main() {
const auto bmi{ get_bmi({sex::m, 80, 185}) };
std::cout << bmi << "\n";
}
Lösung von: Jens Kelm (@JKooP)
' VBA
Enum Sex
female_
male_
End Enum
Type Data
sex_ As Sex
weight_kg_ As Double
height_cm_ As Double
End Type
Type Pair
bmi_str_ As String
bmi_dbl_ As Double
End Type
Function GetBMI(data_ As Data) As Pair
Dim res As String
Dim bmi As Double
Dim pair_ As Pair
bmi = Round(data_.weight_kg_ / WorksheetFunction.Power(data_.height_cm_ / 100#, 2), 1)
pair_.bmi_dbl_ = bmi
If data_.sex_ = Sex.female_ And bmi < 19 Or data_.sex_ = Sex.male_ And bmi < 20 Then
res = "Untergewicht"
ElseIf data_.sex_ = Sex.female_ And bmi <= 24 Or data_.sex_ = Sex.male_ And bmi <= 25 Then
res = "Normalgewicht"
Else
res = "Übergewicht"
End If
pair_.bmi_str_ = res
GetBMI = pair_
End Function
Sub Main()
Dim data_ As Data
Dim pair_ As Pair
data_.sex_ = Sex.male_
data_.weight_kg_ = 80
data_.height_cm_ = 185
pair_ = GetBMI(data_)
Debug.Print pair_.bmi_dbl_, pair_.bmi_str_
End Sub
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
kg | 20 | 50 | 50 | 62 | 62 | 20 | 80 |
meter | 1 | 1.6 | 1.6 | 1.6 | 1.6 | 1.7 | 1.6 |
bmi | 20 | 19.53 | 19.53 | 24.21 | 24.21 | 6.92 | 31.25 |
geschlecht | w/m | w | m | w | m | w/m | w/m |
Ausgabe | Normal | Normal | Unter | Über | Normal | Unter | Über |
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.5 |
Schwierigkeit: | k.A. |
Webcode: | 4du5-ufpz |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |