Frage von SKEPTA12, 45

BMI ausrechnen auf C? ?

Das Problem ist, dass die Klammer nicht zuerst berechnet wird..

Antwort
von ceevee, 13

Integer sind Ganzzahlen, also 1,2,3,4 usw... - nix dazwischen. Ein Wert "1.80" existiert als Integer nicht.

Dein Programm rechnet also in dem Beispiel 80 / (187 * 187), das wäre 0.00228 und das wäre zum einen ein falscher BMI und zum andere würde der Wert wegen des Integers auf 0 gerundet werden. Und diese 0 siehst du ja auch.

Sergeant Pinpack hat schon die richtige Lösung gegeben - du musst die Variablen als float oder double deklarieren, nicht als Integer. Und außerdem darfst du nicht "1,87" eingeben, sondern musst "1.87", also "1 Punkt 87" eingeben. Das wäre sonst der nächste Fehler.

Antwort
von MarcelDavis321, 21

das Problem ist dass bei höhe*höhe irgendwas mit 180 hoch 2 raus kommt. Wenn du also einen realistischen wert eingibst kommst du auf 80 / 30.000 und da kommt zum integer natürlich 0 raus. Deine Formel ist einfach falsch. Die Größe muss in Metern angegeben werden und nicht in Zentimetern.

Expertenantwort
von kami1a, Community-Experte für BMI, 5

Hallo! Lass doch einfach mal hier rechnen, alles Gute.

http://www.bmi-rechner.net/

Antwort
von SergeantPinpack, 25

Deine BMI-Formel ist schlicht falsch. Zur Berechnung wird die Körpergröße in Metern angegeben, nicht in Zentimetern.

Du rechnest in Zentimetern, daher ist dein Ergebnis kleiner 1 ("0" bei Verwendung von int).


Kommentar von SKEPTA12 ,

Bei einer Eingabe von 1,80 wird mir ein BMI von 80 als Ergebnis geliefert

Kommentar von SergeantPinpack ,

Entweder bist du extremst übergewichtig, oder du solltest mal deine Variablendeklaration überprüfen. "1,80" ist kein Integer-Wert und scanf("%d") funktioniert natürlich auch nicht.

Kommentar von SKEPTA12 ,

Es ist so das der Wert "1,80" nicht erkannt wird, bloß weiß ich jetzt nicht welchen syntax ich verwenden soll. Mehr als scanf und printf hab ich zurzeit nicht drauf.

Kommentar von SergeantPinpack ,

Du deklarierst deine Variablen als "float" und liest die Werte mit scanf("%f") ein.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten