2016-08-09 48 views
-2

Also habe ich beschlossen, meinen Freunden zu helfen, Gewicht zu verlieren, ich bin zum Codieren gewusst und versuche, ein Programm zu entwickeln, das Ihren BMI (Body Mass Index) berechnet, aber ich bin ein wenig verwirrt mit meinem wenn Aussagen. Sie arbeiten nicht so, wie ich es von ihnen erwarte. Hier ist, was ich bisher bekommen habe und ich kann es nicht verstehen, warum es nicht funktioniert.Debugging meine if-Anweisungen

#include <iostream> 
#include <cmath> 
using namespace std; 

int main() { 
    double weight; 
    double height; 
    double bmi; 
    cout << "Enter weight in kilograms:\n"; 
    cin >> weight; 
    cout << "Enter height in metres:\n"; 
    cin >> height; 

    bmi = weight/(pow(height,2)); 

    if (bmi < 18.5) { 
      cout <<"Your BMI is " << bmi <<", which means you are in the Underweight range" << endl; 
    } 
    else { 
    (bmi > 18.5) && (bmi < 24.9) 
      cout <<"Your BMI is " << bmi <<", which means you are in the Normal range" << endl; 
    } 

    else { 
     (bmi > 25.0) && (bmi < 29.9) 
      cout <<"Your BMI is " << bmi <<", which means you are in the Normal range" << endl; 
    } 

    else (bmi > 30) { 
      cout <<"Your BMI is " << bmi <<", which means you are in the Obese range" << endl; 
    } 
    return 0; 
} 

wurde mir gesagt, ich mehrmals verwenden, sonst könnte und ich denke, dass es die Ursache des Fehlers sein könnte, ich glaube ich in der Nähe bin.

Vielen Dank.

+2

Syntax ist falsch: Verwenden Sie 'if (cond) {...} sonst if (cond2) {... } else if (cond3) {...} else {....} ' – Garf365

+0

@ Garf365 super danke, ich werde es jetzt versuchen! –

+0

Warum gibt es zwei 'Normale Bereiche'? Was ist der Unterschied? Ist eine mehr "Normal" als die andere? –

Antwort

2

Die korrekte Syntax ist:

if (bmi < 18.5) { 
     cout <<"Your BMI is " << bmi <<", which means you are in the Underweight range" << endl; 
} 
// else bmi >= 18.5, no need to test it again 
else if(bmi < 24.9) { 
     cout <<"Your BMI is " << bmi <<", which means you are in the Normal range" << endl; 
} 
else if(...) { 
    // ... 
} 
else { 
    // ... 
} 
+0

Nur zu sagen: Was ist, wenn bmi == 18,5? – gnasher729

+0

Gutes Sprichwort :) Ich bearbeite meine Antwort – wasthishelpful

-2

Ihre if-else Syntax falsch ist. Es sollte sein, wenn (Bedingung) -else if (andere Bedingung) -else, wie folgt:

bmi = weight/(pow(height,2)); 

if (bmi < 18.5) { 
     cout <<"Your BMI is " << bmi <<", which means you are in the Underweight range" << endl; 
} 
else if ((bmi > 18.5) && (bmi < 24.9)) 
     cout <<"Your BMI is " << bmi <<", which means you are in the Normal range" << endl; 
} 

else if ((bmi > 25.0) && (bmi < 29.9)) 
     cout <<"Your BMI is " << bmi <<", which means you are in the Normal range" << endl; 
} 

else /*(bmi > 30)*/ { 
     cout <<"Your BMI is " << bmi <<", which means you are in the Obese range" << endl; 
} 
return 0; 
+0

Ups, vergaß diese Klammern, als ich klebte, guten Ruf. –

+1

Also bmi = 18,5 oder 25,0 ist fettleibig? – gnasher729

+0

Ugh. Denken Sie darüber nach, was Ihre Vergleichsoperatoren und -werte tun. Prüfen auf z.B. "<18,5" und dann "> 18,5" bedeutet, dass exakte Werte, z. '18.5' werden von keinem Ihrer expliziten Bedingungsblöcke abgefangen und werden daher fälschlicherweise in die finale 'else'-Klausel eingefügt. In gleicher Weise wird z.B. '<24.9' und dann'> 25.0' bedeutet, dass der gesamte '0.1' Wertebereich' 24.9 <= n <= 25.0' ebenfalls nicht übereinstimmen und dort absteigen kann. Sie müssen die Werte korrigieren, mit denen verglichen wird, und die richtigen Operatoren verwenden, um den Vergleich durchzuführen. –