2010-06-13 4 views
1

En fait je travaille sur la calculatrice bmi. Où je voudrais calculer bmi pour la taille en pouces et le poids en livres et aussi besoin d'une formule correcte pour la taille en cm et le poids en kgs.J'ai besoin de la syntaxe objective-C pour calculer bmi

J'ai essayé mais je n'ai pas pu calculer la valeur réelle avec la plage ci-dessous. Il dépasse la gamme.

IMC Catégories:

* Underweight = <18.5 
* Normal weight = 18.5-24.9 
* Overweight = 25-29.9 
* Obesity = BMI of 30 or greater 
+0

Formule pour l'unité impériale ci-dessous. Si vos résultats sont _way_ off; assurez-vous de faire le calcul '^ 2' avant la division. – jensgram

Répondre

2

Ici, vous allez (cela suppose que vos valeurs d'origine sont int s - vous pouvez facilement utiliser des flotteurs à la place sans aucun problème):

// Metric 
int heightInCms; 
int weightInKgs; 

// Imperial 
int heightInInches; 
int weightInPounds; 

float height; // metres 
float weight; // kilograms 

// Unit Conversions 
height = (float) heightInCms * 0.01; 
weight = (float) weightInKgs; 

height = (float) heightInInches * 0.0254; 
weight = (float) weightInPounds * 0.4536; 

float BMI = weight/(height * height); 

if (BMI < 18.5) { 
    // Underweight 
} 
else if (BMI < 25.0) { 
    // Normal 
} 
else if (BMI < 30.0) { 
    // Overweight 
} 
else { 
    // Obese 
} 
+0

Bonjour cette réponse est acceptée? La hauteur sera excessive. height = (float) heightInCms * 0,01; poids = (flotteur) weightInKgs; hauteur = (flottant) heightInInches * 0,0254; poids = (flottant) poidsInPounds * 0,4536; flotteur IMC = poids/(hauteur * hauteur); –

+0

@BhaveshLathigara désolé, pourriez-vous préciser ce que vous voulez dire? –

+0

// Conversions d'unités height = (float) heightInCms * 0,01; poids = (flotteur) weightInKgs; hauteur = (flottant) heightInInches * 0,0254; poids = (flottant) poidsInPounds * 0,4536; –

0

Je viens de deviner que votre problème est avec float et entier. Vous devez vous assurer que vous utilisez le poids CGFloat pour flotteur de sorte qu'il peut contenir nombre à virgule flottante

Ensuite, vous faites juste beaucoup de si d'autre

CGFloat BMI = weight(lb) x 703/height * height 

if (BMI <= 18.5) 
    NSLog(@"Under weight"); 
+1

'^' dans C est un XOR bit à bit, pas un opérateur exponentiel. –

+0

ah ouais, c'est un problème, je vais essayer de le résoudre – vodkhang