C-Programmierung BMI Wert berechnen

greensoja

Newbie
Registriert
Apr. 2024
Beiträge
3
Hallo,
ich bin im 1.Semester eines Informatikstudiums und muss einen Code schreiben der einen BMI Wert ausrechnen soll.
Ich habe zwar einen geschrieben und ich habe zwar einen Ansatz und zwar soll der bmi wert mithilfe der formel kg/m^2 berechnet werden jedoch kommen bei mir lauter 0 raus und ich verstehe nicht wo das Problem ist.
Es wäre super wenn ihr mir helfen konntet, denn bis jetzt habe ich eher komplizitierter Codes gesehen aber wir sind noch nicht so weit (wir hatten erst Variablen, Typenkonvertierung und Kontrollstrukturen ).

Oh und die Eingabe soll in g und cm sein, sodass man dann später in kg und m^2 umwandelt.

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()

{

int gewicht;

int groesse;

float bmi_wert;

//Eingabe

scanf("%i %i",&gewicht, &groesse);

//Formel um BMI Wert auszurechnen

bmi_wert = (gewicht/1000)/((groesse*groesse)/100);

//Ausgabe

printf("Der BMI liegt bei: %.2f!", bmi_wert);

return 0;

}
 
Pack deinen Code bitte in Codeblöcke, sodass man ihn besser lesen kann.
 
  • Gefällt mir
Reaktionen: Mulciber
Debugger schon angeworfen und geschaut was so jeden Schritt/Zeile passiert?
 
greensoja schrieb:
((groesse*groesse)/100)
so nebenbei sollte das eher ((groesse*groesse)/10000) sein, oder:
((groesse/100)*(groesse/100))
 
NJay schrieb:
Pack deinen Code bitte in Codeblöcke, sodass man ihn besser lesen kann.

1712590294956.png


Ok, ich hoffe man kann das so lesen
 
@dverOstE Man soll hier keine fertigen Lösungen posten.
 
dverOstE schrieb:
Passt sowas?

C:
#include <stdio.h>

int main() {
    long gewichtInGramm;
    int groesseInCm;
    double gewichtInKg, groesseInMetern, bmi;

    // Eingabeaufforderung für den Benutzer
    printf("Geben Sie Ihr Gewicht in Gramm ein: ");
    scanf("%ld", &gewichtInGramm);

    printf("Geben Sie Ihre Groesse in Zentimetern ein: ");
    scanf("%d", &groesseInCm);

    // Umrechnung von Gramm in Kilogramm und Zentimeter in Meter
    gewichtInKg = gewichtInGramm / 1000.0;
    groesseInMetern = groesseInCm / 100.0;

    // Berechnung des BMI
    bmi = gewichtInKg / (groesseInMetern * groesseInMetern);

    // Ausgabe des BMI
    printf("Ihr BMI-Wert betraegt: %.2f\n", bmi);

    return 0;
}
ja ich glaube sowas wäre auch möglich, zumindest verstehe ich das ... danke für den ansatz!
Ergänzung ()

Decrepified schrieb:
so nebenbei sollte das eher ((groesse*groesse)/10000) sein, oder:
((groesse/100)*(groesse/100))
Ah ok danke , das macht Sinn ... aber es kommt zwar keine 0 aber dafür immernoch eine falsche Antwort heraus
 
  • Gefällt mir
Reaktionen: dverOstE
Lass dir mal gewicht und groesse nach der Eingabe ausgeben. Steht in den Variablen nach der Eingabe wirklich das drin, was drin stehen soll?

Edit: und wenn du das überprüft hast und alles passt, teil die Rechnung auf. Mach mal gewicht/1000 und lass es dir ausgeben und auch (groesse*groesse)/100.

Generell beim programmieren: Wenn es einen Fehler gibt muss man zeile für Zeile überprüfen, ob das passiert, was passieren soll.
 
greensoja schrieb:
Ok, ich hoffe man kann das so lesen
Besser direkt hier im Editor:
1712591824870.png


oder direkt in [CODE=c][/CODE]Klammern

Dann gibt es auch Zeilennummer etc.
 
  • Gefällt mir
Reaktionen: Micke
Raybeez schrieb:
Lass dir mal gewicht und groesse nach der Eingabe ausgeben. Steht in den Variablen nach der Eingabe wirklich das drin, was drin stehen soll?
Das ist zumindest der richtigre Ansatz den Fehler zu suchen.

Spoiler
Ich kann mir vorstellen, dass es Probleme gibt, weil du einen Integer durch 1000 teilst und da halt nen Wert <1 rauskommt, der wird dann zur null
 
Integer (int, long, ...) , nur so zur Info, sind Ganzzahlig, d.h. 0, 1, 2, ...

Willst du irgendwas mit Komma (zB 1,234) dann ist der richtige Datentyp eine Gleitkommazahl (float, double). Am besten du liest die nochmal die verschiedenen Datentypen für Zahlen durch.

Neben all den anderen Ansätzen die hier schon gepostet wurden.
 
  • Gefällt mir
Reaktionen: Felix#
Mein Tipp: Die wenigsten schaffen ihr Studium als Einzelkämpfer. Dass du bei dieser Aufgabe Hilfe brauchst, zeigt, dass das auch für dich gilt. Suche Rat bei Kommilitonen. Die machen das gleiche durch wie du. Früher oder später musst das eh, fang lieber früher damit an.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: DoNG und 00Julius
tollertyp schrieb:
Die wenigsten sxchaffen ihr Studium als Einzelkämpfer
Würde ich dir auch empfehlen. Ich hab den ersten Anlauf nahe meines Elternhauses gestartet und bin zur Uni gependelt und hab im Studiengang daher nie so richtig Anschluss gefunden, weil ich immer etwas weiter weg von den restlichen Leuten war. Studiengang war auch nicht genau das richtige und im zweiten Anlauf bin ich dann in eine andere Stadt fürs Studium gezogen und hab im Studiwohnheim gewohnt und war viel besser vernetzt. Dann hat es wunderbar geklappt. Das Forum hier kann noch eine Anlaufstelle sein, falls du auch mit deiner Lerngruppe nicht mehr weiter kommst. Deine Kommilitonen haben eine größere Motivation (sollten sie zumindest) die Aufgaben zu erledigen, als wir hier im Forum. Wenn da mal gerade nicht die richtigen Leute mitlesen, dann hilft dir hier vielleicht niemand.
Raybeez schrieb:
Generell beim programmieren: Wenn es einen Fehler gibt muss man zeile für Zeile überprüfen, ob das passiert, was passieren soll.
Anfangs kann man da mit vielen einfachen printf arbeiten. In diesem Fall die Rechnung einfach mal aufsplitten und die Zwischenergebnisse ausgeben lassen.
 
greensoja schrieb:
Ja ich glaube sowas wäre auch möglich, zumindest verstehe ich das ... danke für den ansatz!
die Frage ist ja nun, ob du bei der gespoilerten Loesung jetzt konkret den Unterschied zu deinem Code erkennst. Das ist genau der Grund warum fertige Loesungen zu posten nicht unbedingt ideal sind.
Also faellt dir an dem Code was auf bezogen auf deinem Code?
 
greensoja schrieb:
Es wäre super wenn ihr mir helfen konntet, denn bis jetzt habe ich eher komplizitierter Codes gesehen aber wir sind noch nicht so weit (wir hatten erst Variablen, Typenkonvertierung und Kontrollstrukturen ).
Und wie kommt es dann das du bei solchen "leichten" Code Probleme hast wenn du schon eher komplizierteren Code gesehen hast?
 
Zurück
Oben