BMI-Rechner (Anfänger) richtigstellen und verbessern



  • Hier versuche ich einen BMI-Rechner zu programmieren und bin dabei irgendwie gescheitert.

    Folgende Probleme,

    #include <stdio.h>
    #include <math.h> /* noch nicht benötigt */ 
    
    int main ()
    
    {
    
        float BMI, Koerpermasse, Koerpergroesse; /* Variablen deklaraieren */
    
        printf ("Berechnung des Body Mass Indexes.\n\n"); /* Titel */
    
        printf ("Geben Sie ihr Gewicht ein:\n");
        scanf  ("%f", &Koerpermasse);
    
        printf ("Geben Sie ihre Koerpergroesse ein:\n");
        scanf  ("%f", &Koerpergroesse);
    
        BMI = Koerpermasse%(Koerpergroesse*Koerpergroesse); /* Körpergröße dividiert (Modulo) durch Körpergröße hoch 2 */
    
        printf("%f /(%f * %f)= %f\n", Koerpermasse, Koerpergroesse, BMI);
    
        return 0;
    
    }
    

    Nun ja, ich würde es irgendwie auch gerne so haben, dass ich die Funktion pow zum Potenzensieren stattdessen verwende.
    Aber leider kommt mir bei mir so ein Fehler vor...

    Berechnung des Body Mass Indexes.

    Geben Sie ihr Gewicht ein:
    49
    Geben Sie ihre Koerpergroesse ein:
    175
    49.000000 /(175.000000 * 0.001600)= 0.000000

    Process returned 0 (0x0) execution time : 3.936 s
    Press any key to continue.
    ---
    Komischerweise habe ich 49 kg und 175 cm als Beispiel angegeben, aber woher entnimmt es den Wert "0.001600"???
    Dann noch als Ergebnis 0.



  • Schau dir nochmal den Aufruf von prontf an.



  • Letzte Zeile?

    Möglicherweise auch da einen Modulo einsetzen?

    BMI = Koerpermasse/(Koerpergroesse*Koerpergroesse);
    
        printf("%f = %f%(%f*%f)\n", Koerpermasse, Koerpergroesse, BMI);
    

    Mehr weiß ich echt nicht, ich habe es versucht umzudrehen und es auch durch Modulo ersetzt. Noch immer irgendwie 0 als Ergebnis.

    Muss das in Reihenfolge eigtl. gesetzt werden?

    Dieser Abschnitt:

    Koerpermasse, Koerpergroesse, BMI);
    
     BMI = Koerpermasse/(Koerpergroesse*Koerpergroesse);
    
    printf("%f = %f%(%f*%f)\n", BMI, Koerpermasse, Koerpergroesse, Koerpergroesse);
    
        return 0;
    

    Jetzt kommt als Ergebnis 0.001633
    Das ist eigtl. richtig, wenn 16,33 stehen würde. Wie bekomme ich das nach vorn??
    Gibt es dazu Funktionen?

    THREAD ABGESCHLOSSEN. FERTIG!



  • Möglicherweise auch da einen Modulo einsetzen?

    kann man eigentlich modulo-operationen auf floats anwenden? mir war mal so, dass das nicht geht.

    Mehr weiß ich echt nicht, ich habe es versucht umzudrehen und es auch durch Modulo ersetzt. Noch immer irgendwie 0 als Ergebnis.

    dein fehler ist/war ja auch, dass du 4 mal %f schreibst, aber nur 3 parameter übergibst.

    Muss das in Reihenfolge eigtl. gesetzt werden?

    du musst immer alles in reihenfolge setzen.

    Jetzt kommt als Ergebnis 0.001633
    Das ist eigtl. richtig, wenn 16,33 stehen würde. Wie bekomme ich das nach vorn??
    Gibt es dazu Funktionen?

    für den bmi musst du "körpergröße in metern" verwenden, oder die körpergröße in zentimetern mit 100 multiplizieren, dann passt das ganze auch.



  • HansKlaus schrieb:

    ... , oder die körpergröße in zentimetern mit 100 multiplizieren, dann passt das ganze auch.

    Dann hast du den Wert als Vielfachses von 100 µm.



  • ja jetzt wo dus sagst........ 🙄

    also dividieren! 😃


Log in to reply