2016-03-28 3 views
-2

Рассчитать индекс массы тела. Индекс массы тела сравнивает ваш вес с высотой и рассчитывается путем деления веса в килограммах на высоту в метрах. Это дает вам представление о том, есть ли у вас недостаточный вес, здоровый вес, избыточный вес или ожирение для вашего роста.Как рассчитать функцию ИМТ?

Индекс массы тела Категории:

  1. Пониженный = < 18,5
  2. Нормальный вес = 18.5-24.9
  3. Избыточный вес = 25-29.9
  4. Ожирение = ИМТ 30 или выше

Если вы страдаете недостаточным весом или избыточным весом или страдаете ожирением, определите идеальный вес в зависимости от вашего роста и возраста.

Эстимейт Идеальный вес тела в кг) (по формуле Devine:

Мужчины: IBW = 50 kg + 2.3 kg for each inch over 5 feet.

Женщины: IBW = 45.5 kg + 2.3 kg for each inch over 5 feet.

#include <stdio.h> 
#include <stdlib.h> 

double calculateBMI(double weight, double height); 

int main(void) 
{ 
    printf("Calculate your BMI\n"); //Calculation of body mass index (BMI) 

    double w, h, ret; 
    double BMI = w/(h*h); 
    ret = calculateBMI(BMI); 

    printf("Enter your weight in kilograms:\n", w); //Input your weight in kilograms here 
    scanf("%lf", &w); 
    printf("Enter your height in metres:\n", h); //Input your height in metres here 
    scanf("%lf", &h); 
    printf("Your BMI is %lf\n", ret) 

    printf("BMI categories:\n"); 
    if (BMI < 18.5) 
    { 
     printf("Your BMI is %lf and you are currently underweight.\n"); 
    } 
    else if (BMI >= 18.5 && BMI <= 24.9) 
    { 
     printf("Your BMI is %lf and you are normal weight.\n"); 
    } 
    else if (BMI >= 25 && BMI <= 29.9); 
    { 
     printf("Your BMI is %lf and you are currently overweight.\n"); 
    } 
    else (BMI >= 30); 
    { 
     printf("Your BMI is %lf and you are obese.\n"); 
    } 


    return 0; 
} 

double calculateBMI(double weight, double height) 
{ 
    double result; 
    result = weight/(height*height); 

    return result; 
} 

Помощь Я до сих пор не знаю, как делать эти функции. Пожалуйста, помогите мне.

+2

А в чем проблема у вас возникли? Какой у Вас вопрос? –

+0

У меня возникла проблема с моей функцией и возвратом. Можете ли вы помочь мне указать, где я ошибся, и улучшить кодирование? –

+0

Во-первых, вы фактически не вызываете * свою функцию нигде. Чтобы продолжить использовать 'printf' с кодом форматирования, который ожидает аргументы, но вы не предоставляете эти аргументы (приводя к * неопределенному поведению *). И, наконец, вы используете множество переменных без инициализации (снова приводя к неопределенному поведению). –

ответ

2

Вы должны использовать параметры, используемые в методе для расчета ИМТ. Ваши переменные BMI, высота и вес не указаны первоначально в функции. Вместо этого вы должны объявить BMI как double, а также использовать высоту и вес в качестве параметров функции.

Кроме того, вам необходимо вернуть значение ИМТ от функции. Вы неправильно возвращаете вычислениеBMI, которое не является допустимым идентификатором внутри функции.

Рабочий код будет: -

double calculateBMI(double weight, double height) 
{ 
    double BMI = weight/(height*height); 
    return BMI; 
} 

Кроме того, вы не вызывается метод calculateBMI() внутри вашей основной().

... 
printf("Enter your weight in kilograms:\n"); //Input your weight in kilograms here 
scanf("%lf", &weight); 
printf("Enter your height in metres:\n"); //Input your height in metres here 
scanf("%lf", &height); 
// add below line in your code to call the function. 
BMI = calculateBMI(height,weight); 
printf("BMI categories:\n"); 
... 

Я также предлагаю вам прочитать больше о функциях в C. Вы нужны более базовые знания функций (практика трудно тоже).

EDIT ---> Основываясь на комментарий OP, в окончательный код будет выглядеть так:

#include <stdio.h> 
#include <stdlib.h> 

double calculateBMI(double weight, double height); 

int main(void) 
{ 
printf("Calculate your BMI\n"); //Calculation of body mass index (BMI) 

double w, h, BMI; 
printf("Enter your weight in kilograms:\n", w); //Input your weight in kilograms here 
scanf("%lf", &w); 
printf("Enter your height in metres:\n", h); //Input your height in metres here 
scanf("%lf", &h); 
BMI = calculateBMI(w,h); 
printf("Your BMI is %lf\n", BMI) 

printf("BMI categories:\n"); 
if (BMI < 18.5) 
{ 
    printf("Your BMI is %lf and you are currently underweight.\n"); 
} 
else if (BMI >= 18.5 && BMI <= 24.9) 
{ 
    printf("Your BMI is %lf and you are normal weight.\n"); 
} 
else if (BMI >= 25 && BMI <= 29.9); 
{ 
    printf("Your BMI is %lf and you are currently overweight.\n"); 
} 
else (BMI >= 30); 
{ 
    printf("Your BMI is %lf and you are obese.\n"); 
} 


return 0; 
} 

double calculateBMI(double weight, double height) 
{ 
    double result; 
    result = weight/(height*height); 
    return result; 
} 
+0

Да, ИМТ должен быть возвращен не функцией. Спасибо –

+0

@ A.nonymous - Проверьте также редактирование. –

+0

@ A.nonymous Еще одна вещь, вызывающая функцию calculateBMI(), отсутствует, проверьте ее. – Ash

0

Ваша функция:

double calculateBMI(double w, double h) 
{ 
    BMI = weight/(height*height); 
    return calculateBMI; 
} 

Здесь вы вызываете функцию и возвращает имя функции "calculateBMI".

Верните правильное значение, которое вы хотите. Это не рекурсивная функция.

+0

То, что не будет компилироваться, BMI, вес и высота никогда не объявляются. –

+0

Да, я пропустил это – Ash

+0

Можете ли вы, ребята, помочь мне, пожалуйста? –

Смежные вопросы