c++ BMI Rechner



  • Nur einer?

    Ok raten.
    Müssen wir die Zeilennummer dazu sagen, ist die Fehlermeldung in deutsch oder englisch?

    Mmm....

    Ich nehme ertmal ein N



  • Sgaf schrieb:

    wenn ich das als int schreibe das array kommt mir ein fehler

    Wenn Du Dich an Deinen Thread (https://www.c-plusplus.net/forum/329794) von gestern erinnerst, hattest Du dort eine Methode um longs von der Tastatur einzulesen.
    Ein nicht so schwerer Algorithmus, der etwas Wissen um ASCII verlangt, aber ansonsten nur unserem Dezimalsystem entspricht.

    Ungefähr so sah das aus, und Du wolltest noch ein wenig darüber grübeln:

    #include <iostream>
    
    long get_num(){
      const int MAX = 32;
      char input [MAX];
      int i = 0;
      long Wert = 0;
    
      std::cin.getline(input, MAX);
      while (input[i] >='0' && input[i] <='9')
        {
          Wert *= 10;
          Wert += input[i] - '0';
        i++;
        }
      return Wert;
    }
    
    int main(){
      long l = get_num();
      std::cout << "l:  " << l << std::endl;
    }
    

    Ein typisches doofes Buchbeispiel, oder eine Aufgabe für ein Praktikum. Hat Dich auf jeden Fall erfolgreich verwirrt...

    Im echten Leben geht Zahleneinlesen so:

    #include <iostream>
    
    int main(){
      int i;
      std::cin >> i;
      std::cout << "i: " << i << std::endl;
    }
    

    Genauso machst Du das mit alter jetzt auch. (Wie Du es schon mit groesse und gewicht tust.)



  • danke 😃



  • #include <iostream>
    #include <windows.h>
    #include <iomanip>
    
    using namespace std;
    const int MAX = 80;
    
    int main ()
    {
        float gewicht, grosse, helf, bmiH, bmi ;
        int alter ;
    
        cout << "Geben Sie ihre Groesse ein: ";
        cin >> grosse;
        cout << "Ihre grosse betreagt: " << grosse << "cm";
    
    cout << endl;
    cout << endl;
    
        cout <<"Geben Sie ihr Gewicht ein: " ;
        cin >> gewicht;
        cout << "Ihr Gewicht betreagt: " << gewicht << "kg";
    
    cout << endl;
    cout << endl;
    
        cout << "Geben Sie ihr Alter ein: ";
        cin >> alter;
    
        helf = grosse * grosse;
    
        bmiH = gewicht/ helf ;
        bmi = bmiH * 10000;
    
        cout << endl;
    
        cout << "Ihr Bmi liegt bei: " << bmi << endl;
    
        cout << endl;  
        cout << endl;
    
        if (alter ==  16 && bmi <= 18 )
            {
                cout << "Sie sind untergewichtig Sie sollten mal ein bisschen mehr reinhauen" << endl;
            }
             else if (alter  == 16 && bmi == 19||bmi == 20||bmi == 21|| bmi == 22||bmi == 23||bmi == 24 )
                {
                    cout << "Sie haben ein normales Gewicht weiter so"<<endl;
                }
             else if (alter  == 16 && bmi == 25||bmi == 26||bmi == 27||bmi == 28 )
            {
                cout << "Du bist leicht pummelig geh mal joggen"<<endl;
                }  
                else if (alter  == 16 && bmi >29)
                {
                    cout << "DU FETTSACK GEH MAL ABNEHMEN" << endl;
                    }  
         else if (alter  == 17 && bmi <= 18)
        {
            cout << "Sie sind untergewichtig Sie sollten mal ein bisschen mehr reinhauen"<<endl;
        }
         else if (alter  == 17 && bmi == 19||bmi == 20|| bmi == 21||bmi == 22||bmi == 23||bmi == 24)
        {
            cout << "Sie haben ein normales Gewicht weiter so"<<endl;
        }
         else if (alter  == 17 && bmi == 25||bmi == 26||bmi == 27||bmi == 28)
        {
            cout << "Du bist leicht pummelig geh mal joggen"<<endl;
        }
        else if (alter == 17 && bmi >= 29  )
        {
        	cout << "DU FETTSACK GEH MAL ABNHEMEN" << endl;
    	}
            else if (alter  == 18 && bmi <= 18)
            {
                cout << "Sie sind untergewichtig Sie sollten mal ein bisschen mehr reinhauen " << endl;
            }
            else if (alter 1== 18 && bmi == 19||bmi == 20||bmi == 21||bmi == 22||bmi == 23||bmi == 24)
            {
                cout << "Sie haben ein normales Gewicht weiter so" << endl;
            }  
            else if (alter  == 18 && bmi == 25||bmi == 26||bmi == 27||bmi == 28)
            {
                cout << "Du bist leicht pummelig geh mal joggen"<<endl;
            }
            else if (alter  == 18  && bmi >29)
            {
                cout << "DU FETTSACK GEH MAL ABNEHMEN" << endl;
            }
    	cout << "DU FETTSACK GEH MAL ABNEHMN" << endl;
    	 }
    
         cout << endl;
       	 cout << endl;
    
        cout << setw(10) << "ALTER |" << setw (14) << "Untergewicht |" << setw (15) << "Normalgewicht |" << setw(15) << "Leichtes Uebergewicht |" << setw(13) << "Uebergewicht|" << endl;
        cout << setw(10) << "------|" << setw (14) << "-------------|" << setw (15) << "--------------|" << setw(15) << "----------------------|" << setw(13) << "------------|" << endl;
        cout << setw(10) << "  16  |" << setw (14) << "     <18     |" << setw (15) << "     19-24    |" << setw(15) << "         25-28        |" << setw(13) << "     >29    |" << endl;
        cout << setw(10) << "  17  |" << setw (14) << "     <18     |" << setw (15) << "     19-24    |" << setw(15) << "         25-28        |" << setw(13) << "     >29    |" << endl;
        cout << setw(10) << "  18  |" << setw (14) << "     <18     |" << setw (15) << "     19-24    |" << setw(15) << "         25-28        |" << setw(13) << "     >29    |" << endl;
        cout << setw(10) << "19-24 |" << setw (14) << "     <18     |" << setw (15) << "     19-24    |" << setw(15) << "         25-28        |" << setw(13) << "     >29    |" << endl;
        cout << setw(10) << "25-34 |" << setw (14) << "     <19     |" << setw (15) << "     20-26    |" << setw(15) << "         27-29        |" << setw(13) << "     >30    |" << endl;
        cout << setw(10) << "35-44 |" << setw (14) << "     <20     |" << setw (15) << "     21-26    |" << setw(15) << "         27-30        |" << setw(13) << "     >31    |" << endl;
        cout << setw(10) << "45-54 |" << setw (14) << "     <21     |" << setw (15) << "     22-27    |" << setw(15) << "         28-31        |" << setw(13) << "     >32    |" << endl;
        cout << setw(10) << "55-64 |" << setw (14) << "     <22     |" << setw (15) << "     23-28    |" << setw(15) << "         29-32        |" << setw(13) << "     >33    |" << endl;
        cout << setw(10) << "65-90 |" << setw (14) << "     <23     |" << setw (15) << "     24-29    |" << setw(15) << "         30-33        |" << setw(13) << "     >34    |" << endl;
    
        cin.get ();
        return 0;
    }
    

    Es mag mir nichts mehr ausgeben warum?


  • Mod

    Lies den Thread! Aufmerksam! Da sind immer noch Fehler drin, die erwähnt wurden, aber noch nicht behoben wurden.



  • Ok ich hab die ganzen fehler rausgefunden riuchtige dummheitsfehler aber trotzdem danke an alle



  • #include <iostream>
    #include <windows.h>
    #include <iomanip>
    
    using namespace std;
    
    int main ()
    {
        float gewicht, grosse, helf, bmiH, bmi ;
        int alter ;
    
        cout << "Geben Sie ihre Groesse ein: ";
        cin >> grosse;
        cout << "Ihre grosse betreagt: " << grosse << "cm";
    
    cout << endl;
    cout << endl;
    
        cout <<"Geben Sie ihr Gewicht ein: " ;
        cin >> gewicht;
        cout << "Ihr Gewicht betreagt: " << gewicht << "kg";
    
    cout << endl;
    cout << endl;
    
        cout << "Geben Sie ihr Alter ein: ";
        cin >> alter;
    
        helf = grosse * grosse;
    
        bmiH = gewicht / helf ;
        bmi = bmiH * 10000;
    
        cout << endl;
    
        cout << "Ihr Bmi liegt bei: " << bmi << endl;
    
    cout << endl;
    cout << endl;
    
        if (alter ==  16 && bmi <= 18 )
            {
                cout << "Sie sind untergewichtig Sie sollten mal ein bisschen mehr reinhauen" << endl;
            }
             else if (alter  == 16 && bmi <= 19||bmi <= 20||bmi <= 21|| bmi <= 22||bmi <= 23||bmi <= 24 )
                {
                    cout << "Sie haben ein normales Gewicht weiter so"<<endl;
                }
             else if (alter  == 16 && bmi <= 25||bmi <= 26||bmi <= 27||bmi <= 28 )
            {
                cout << "Du bist leicht pummelig geh mal joggen"<<endl;
                }
                else if (alter  == 16 && bmi >29)
                {
                    cout << "DU FETTSACK GEH MAL ABNEHMEN" << endl;
                    }
         else if (alter  == 17 && bmi <= 18)
        {
            cout << "Sie sind untergewichtig Sie sollten mal ein bisschen mehr reinhauen"<<endl;
        }
         else if (alter  == 17 && bmi <= 19||bmi <= 20|| bmi <= 21||bmi <= 22||bmi <= 23||bmi <= 24)
        {
            cout << "Sie haben ein normales Gewicht weiter so"<<endl;
        }
         else if (alter  == 17 && bmi <= 25||bmi <= 26||bmi <= 27||bmi <= 28)
        {
            cout << "Du bist leicht pummelig geh mal joggen"<<endl;
        }
        else if (alter == 17 && bmi >= 29  )
        {
            cout << "DU FETTSACK GEH MAL ABNHEMEN" << endl;
        }
            else if (alter  == 18 && bmi <= 18)
            {
                cout << "Sie sind untergewichtig Sie sollten mal ein bisschen mehr reinhauen " << endl;
            }
            else if (alter == 18 && bmi <= 19||bmi <= 20||bmi <= 21||bmi <= 22||bmi <= 23||bmi <= 24)
            {
                cout << "Sie haben ein normales Gewicht weiter so" << endl;
            }
            else if (alter  == 18 && bmi == 25||bmi == 26||bmi == 27||bmi == 28)
            {
                cout << "Du bist leicht pummelig geh mal joggen"<<endl;
            }
            else if (alter  == 18  && bmi >29)
            {
                cout << "DU FETTSACK GEH MAL ABNEHMEN" << endl;
            }
    
         cout << endl;
         cout << endl;
    
        cout << setw(10) << "ALTER |" << setw (14) << "Untergewicht |" << setw (15) << "Normalgewicht |" << setw(15) << "Leichtes Uebergewicht |" << setw(13) << "Uebergewicht|" << endl;
        cout << setw(10) << "------|" << setw (14) << "-------------|" << setw (15) << "--------------|" << setw(15) << "----------------------|" << setw(13) << "------------|" << endl;
        cout << setw(10) << "  16  |" << setw (14) << "     <18     |" << setw (15) << "     19-24    |" << setw(15) << "         25-28        |" << setw(13) << "     >29    |" << endl;
        cout << setw(10) << "  17  |" << setw (14) << "     <18     |" << setw (15) << "     19-24    |" << setw(15) << "         25-28        |" << setw(13) << "     >29    |" << endl;
        cout << setw(10) << "  18  |" << setw (14) << "     <18     |" << setw (15) << "     19-24    |" << setw(15) << "         25-28        |" << setw(13) << "     >29    |" << endl;
        cout << setw(10) << "19-24 |" << setw (14) << "     <18     |" << setw (15) << "     19-24    |" << setw(15) << "         25-28        |" << setw(13) << "     >29    |" << endl;
        cout << setw(10) << "25-34 |" << setw (14) << "     <19     |" << setw (15) << "     20-26    |" << setw(15) << "         27-29        |" << setw(13) << "     >30    |" << endl;
        cout << setw(10) << "35-44 |" << setw (14) << "     <20     |" << setw (15) << "     21-26    |" << setw(15) << "         27-30        |" << setw(13) << "     >31    |" << endl;
        cout << setw(10) << "45-54 |" << setw (14) << "     <21     |" << setw (15) << "     22-27    |" << setw(15) << "         28-31        |" << setw(13) << "     >32    |" << endl;
        cout << setw(10) << "55-64 |" << setw (14) << "     <22     |" << setw (15) << "     23-28    |" << setw(15) << "         29-32        |" << setw(13) << "     >33    |" << endl;
        cout << setw(10) << "65-90 |" << setw (14) << "     <23     |" << setw (15) << "     24-29    |" << setw(15) << "         30-33        |" << setw(13) << "     >34    |" << endl;
    
        cin.get ();
        return 0;
    }
    

  • Mod

    if (alter  == 16 && bmi <= 25||bmi <= 26||bmi <= 27||bmi <= 28)
    

    Denkst du auch nach über das was du schreibst oder ist das eher Codeerzeugung am Fließband?



  • SeppJ schrieb:

    if (alter  == 16 && bmi <= 25||bmi <= 26||bmi <= 27||bmi <= 28)
    

    Denkst du auch nach über das was du schreibst oder ist das eher Codeerzeugung am Fließband?

    lel zum kaputtlachen 😃



  • was ist denn daran so witzig?


  • Mod

    bmi <= 25||bmi <= 26||bmi <= 27||bmi <= 28
    

    Ist komplett identisch zu

    bmi <= 28
    

    Und der Compiler wird es höchstwahrscheinlich auch wegoptimieren.



  • Stimmt -.-

    Ja daruber kann man lachen. xD



  • Sgaf schrieb:

    if (alter  == 16 && bmi <= 25||bmi <= 26||bmi <= 27||bmi <= 28)
    

    Hm mal sehen. Nehmen wir an, das Alter ist 17 und bmi 25. Dann ergibt die Bedingung true. Obwohl doch direkt am Anfang auf "alter == 16" geprüft wird.

    Lässt man übrigens die überflüssigen Bedingungen weg, also

    if (alter  == 16 && bmi <= 25)
    

    dann ergibt das plötzlich false.

    Denk mal drüber nach.


  • Mod

    Ups, habe gar nicht hingeschaut dass dort ja noch ein && versteckt ist.

    Dann gilt dasselbe eben für bmi <= 26||bmi <= 27||bmi <= 28 .


Anmelden zum Antworten