Имею компьютер MMI (индекс массы тела), по формуле вес (кг) / Pow (рост (м), 2). Я пробовал go дальше и написать код, который рекомендует на сколько кг сбросить вес или набрать вес в зависимости от оптимального bmi.
Для похудения работает хорошо, проблема в полноте, не доходит до такой же оптимальный bmi.
Пример. Если у меня 100 кг и 1,84 м, то вам нужно дойти до 29,5, вам нужно дойти до 24 часов, где-то до 87 кг. Пока все хорошо Но если у меня 30 кг и 1,84, тогда вам нужно дойти до 8,8, вам нужно дойти до 24, и вот проблема в том, что формула рекомендует 64 кг, что для 1,84, 64 кг ниже оптимального bmi.
using System;
namespace BMI_Calculator
{
class Program
{
static void Main(string[] args)
{
// define variables
double weight;
double height;
double optimalBmiMin = 18.5;
double optimalBmiMax = 24;
double bmiPointKg = 2.3;
/*
Console.WriteLine("BMI Calculator");
Console.WriteLine("");
Console.WriteLine("developer: dannybest");
System.Threading.Thread.Sleep(5000);
Console.Clear();
*/
Console.WriteLine("Write your weight in kg:");
weight = Convert.ToDouble(Console.ReadLine());
Console.Clear();
Console.WriteLine("Write your height in m:");
height = Convert.ToDouble(Console.ReadLine());
Console.Clear();
// bmi formula rounded to two decimals
double bmi = weight / Math.Pow(height, 2);
// calculates the difference in kg;
double weightDiffLose = (bmi - optimalBmiMax) * bmiPointKg;
double weightDiffGain = (optimalBmiMax - bmi) * bmiPointKg;
// calculates the recomanded kg for your height based on bmi score;
double recLoseKg = weight - weightDiffLose;
double recGainKg = weight + weightDiffGain;
// if is under optimal BMI score, calculate how much you should gain
if (bmi < optimalBmiMin)
{
if (bmi < 15)
{
Console.WriteLine("Your BMI is: " + bmi);
Console.WriteLine("Health: Very serious underweight");
}
else if (bmi > 15.0 && bmi < 16.0)
{
Console.WriteLine("Your BMI is: " + bmi);
Console.WriteLine("Health: Severely underweight");
}
else if (bmi > 16.0 && bmi < 18.5)
{
Console.WriteLine("Your BMI is: " + bmi);
Console.WriteLine("Health: Underweight");
}
Console.WriteLine();
Console.WriteLine("You should gain: " + weightDiffGain + " kg");
Console.WriteLine("Recomanded kg for your height: " + recGainKg + " kg / " + height + " m");
}
// else if above optimal BMI score, calculate how much you should lose
else if (bmi > optimalBmiMax)
{
if (bmi > 25 && bmi < 30)
{
Console.WriteLine("Your BMI score is: " + bmi);
Console.WriteLine("Health status: Overweight");
}
else if (bmi > 30 && bmi < 35)
{
Console.WriteLine("Your BMI is: " + bmi);
Console.WriteLine("Health: Obese Class I (moderately obese)");
}
else if (bmi > 35 && bmi < 40)
{
Console.WriteLine("Your BMI is: " + bmi);
Console.WriteLine("Health: Obese Class II (strictly obese)");
}
else if (bmi > 40)
{
Console.WriteLine("Your BMI is: " + bmi);
Console.WriteLine("Health: Obese Class III (very seriously obese)");
}
Console.WriteLine();
Console.WriteLine("You should lose: " + weightDiffLose + " kg");
Console.WriteLine("Recomanded kg for your height: " + recLoseKg + " kg / " + height + " m");
}
// else normal BMI score
else
{
Console.WriteLine("Your BMI score is: " + bmi);
Console.WriteLine("Health status: Normal (healthy weight)");
}
}
}
}