c++ BMI Rechner
-
HALLO ich muss für die schule einen bmi rechner programmieren hab ich geschafft und läuft.
Doch ich wollte noch eine weiter Option hinzufügen, dass man seinn Alter noch eingeben muss.
#include <iostream> #include <windows.h> #include <iomanip> using namespace std; const int MAX = 80; int main () { float gewicht, grosse, helf, bmiH, bmi ; char alter [MAX]; cout << "Geben Sie ihre Groesse ein: "; cin >> grosse; cout << "Ihre grosse betreagt: " << grosse ; cout << endl; cout <<"Geben Sie ihr Gewicht ein: " ; cin >> gewicht; cout << endl; cout << "Geben Sie ihr Alter ein: "; cin.getline (alter, MAX); cin >> alter; helf = grosse * grosse; bmiH = gewicht/ helf ; bmi = bmiH * 10000; cout << endl; cout << "Ihr Bmi liegt bei: " << bmi << endl; cout << endl; if (alter [MAX] == '16' && bmi <= 18 ) { cout << "Sie sind Untergewichtig Sie sollten mal einbsichen mehr reinhauen" << endl; } else if (alter [MAX] == 16 && bmi == 19||20||21||22||23||24 ) { cout << "Sieh haben ein normales Gewicht weiter so"<<endl; } else if (alter [MAX] == 16 && bmi == 25||26||27||28 ) { cout << "Du bist leicht pummelig geh ma joggen"<<endl; } else if (alter [MAX] == 16 && bmi >29) { cout << "DU FETTSACK GEH MA ABNEHMEN" << endl; } else if (alter [MAX] == 17 && bmi <= 18) { cout << "Sie sind Untergewichtig Sie sollten mal einbsichen mehr reinhauen"<<endl; } else if (alter [MAX] == 17 && bmi == 19||20||21||22||23||24) { cout << "Sieh haben ein normales Gewicht weiter so"<<endl; } else if (alter [MAX] == 17 && bmi == 25||26||27||28) { cout << "Du bist leich pummelig geh ma joggen"<<endl; } else if (alter [MAX] == 18||19||20||21||22||23||24 && bmi <= 18) { cout << "Sie sind Untergewichtig Sie sollten mal einbsichen mehr reinhauen " << endl; } else if (alter [MAX] == 18||19||20||21||22||23||24 && bmi == 19||20||21||22||23||24) { cout << "Sieh haben ein normales Gewicht weiter so" << endl; } else if (alter [MAX] == 18||19||20||21||22||23||24 && bmi == 25||26||27||28) { cout << "Du bist leich pummelig geh ma joggen"<<endl; } else if (alter [MAX] == 18||19||20||21||22||23||24 && bmi >29) { cout << "DU FETTSACK GEH MA ABNEHMEN" << endl; } else if (alter [MAX] == 25||26||27||28||29||30||31||32||33||34 && bmi <18 ) { cout << "Sie sind Untergewichtig Sie sollten mal einbsichen mehr reinhauen" << 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 klappt nicht so ganz bitte um hilfe
-
Sgaf schrieb:
Es klappt nicht so ganz
Dann ist ja alles glasklar, der Fehler sollte offensichtlich sein.
PS: Ich bin mal nicht ganz so fies, obwohl du es bei solch einer Frage eigentlich verdient hättest und liefere zumindest die Compilerwarnungen, die du anscheinend nicht anschalten konntest. Alle weisen sie auf dicke Fehler hin:
test.cc:42:25: warning: multi-character character constant [-Wmultichar] if (alter [MAX] == '16' && bmi <= 18 ) ^ test.cc: In function ‘int main()’: test.cc:42:25: warning: comparison is always false due to limited range of data type [-Wtype-limits] test.cc:46:37: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 16 && bmi == 19||20||21||22||23||24 ) ^ test.cc:50:37: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 16 && bmi == 25||26||27||28 ) ^ test.cc:62:33: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 17 && bmi == 19||20||21||22||23||24) ^ test.cc:66:33: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 17 && bmi == 25||26||27||28) ^ test.cc:70:60: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 18||19||20||21||22||23||24 && bmi <= 18) ^ test.cc:74:60: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 18||19||20||21||22||23||24 && bmi == 19||20||21||22||23||24) ^ test.cc:78:60: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 18||19||20||21||22||23||24 && bmi == 25||26||27||28) ^ test.cc:82:60: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 18||19||20||21||22||23||24 && bmi >29) ^ test.cc:86:68: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses] else if (alter [MAX] == 25||26||27||28||29||30||31||32||33||34 && bmi <18 ) ^Die ganzen Warnungen, wo Klammern vorgeschlagen werden, weisen gleich auf einen dreifachen Fehler hin:
a == b || cist nicht das gleiche wiea == b || a == c, sonderna == (b || c). Du vergleichst also deinen bmi-Wert mit der VerODERung von einer ganzen Reihe von Zahlen.
Was ist, wenn dein bmi-Wert keine Ganzzahl ist?
Und zu guter Letzt das, was die Warnung aussagt: UND bindet stärker als ODER.
-
Warum ost alter ein char Array und kein int?
Sämtliche Tests mit alter sind blödsinn und wären mit int einfacher.
Vergleich können nicht abgekürzt werden. Es muss heissen
alter == 1 || alter == 2
-
wenn ich das als int schreibe das array kommt mir ein fehler
also musste ich bei meiner veroderung beim alter das immer einzeln hinschreiben?
-
Lorem ipsum
-
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
alterjetzt auch. (Wie Du es schon mitgroesseundgewichttust.)
-
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?
-
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; }
-
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?
-
bmi <= 25||bmi <= 26||bmi <= 27||bmi <= 28Ist komplett identisch zu
bmi <= 28Und 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.
-
Ups, habe gar nicht hingeschaut dass dort ja noch ein
&&versteckt ist.Dann gilt dasselbe eben für
bmi <= 26||bmi <= 27||bmi <= 28.