Что не так с циклом if-else if? - C#
Формулировка задачи:
Первый язык, изучаю полтора месяца и захотелось написать программу которая вычисляет идеальный вес...
Нашел формулу расчета идеального веса, и все окей, кроме одной ошибки...
Когда проходит по 2 case:
Если ввести к примеру 57 килограм и рост 1,66, то результат(18,61.....) будет правильно отображен и напишет:
В тоже время если результат выходит за пределы 25, то все равно показывает сообщение в пределах от 18.5 до 25...
Возможно стоит поставить вместо || другую операцию? Но что бы я не ставил, результат все равно не такой как нужно... Если поставлю && и укажу 79 килограм и рост 1,6, оно выдаст правильный результат только после 4 запросов какой вес и какой рост...
Вот программа целиком.
Есть идеи где я сделал что то не то?)))
case "2": { Vaga IMT = new Vaga(); if ((IMT.GetVaga2() > 18.5) || (IMT.GetVaga2() < 25)) { Console.WriteLine("Вiд 18,5 до 25 – у вас все в порядку з вагою."); break; } else if ((IMT.GetVaga2() >= 25) || (IMT.GetVaga2() < 30)) { Console.WriteLine("Вiд 25 до 30 – у вас спостерiгається надмiрна вага."); } else if ((IMT.GetVaga2() >= 30) || (IMT.GetVaga2() < 35)) { Console.WriteLine("Вiд 30 до 35 – у вас перша ступiнь ожирiння."); } else if ((IMT.GetVaga2() >= 35) || (IMT.GetVaga2() < 40)) { Console.WriteLine("Вiд 35 до 40 – у вас друга ступiнь ожирiння."); } else { Console.WriteLine("Бiльше 40 – у вас третя ступiнь ожирiння. Рiзко пiдвищений ризик для здоров’я."); } break; }
if ((IMT.GetVaga2() > 18.5) || (IMT.GetVaga2() < 25)) { Console.WriteLine("Вiд 18,5 до 25 – у вас все в порядку з вагою."); break; }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(); Console.Write("Оберiть варiант за яким будем визначати вашу iдеальну вагу:\n1. Формула ЮЗ - Годлевського\n2. Iндекс маси тiла\n" + "Ваш вибiр: "); string variants = Convert.ToString(Console.ReadLine()); //Convert.ToString(Console.ReadLine()); switch (variants) { case "1": { Vaga YE = new Vaga(); YE.GetVag(); break; } case "2": { Vaga IMT = new Vaga(); if ((IMT.GetVaga2() > 18.5) || (IMT.GetVaga2() < 25)) { Console.WriteLine("Вiд 18,5 до 25 – у вас все в порядку з вагою."); break; } else if ((IMT.GetVaga2() >= 25) || (IMT.GetVaga2() < 30)) { Console.WriteLine("Вiд 25 до 30 – у вас спостерiгається надмiрна вага."); } else if ((IMT.GetVaga2() >= 30) || (IMT.GetVaga2() < 35)) { Console.WriteLine("Вiд 30 до 35 – у вас перша ступiнь ожирiння."); } else if ((IMT.GetVaga2() >= 35) || (IMT.GetVaga2() < 40)) { Console.WriteLine("Вiд 35 до 40 – у вас друга ступiнь ожирiння."); } else { Console.WriteLine("Бiльше 40 – у вас третя ступiнь ожирiння. Рiзко пiдвищений ризик для здоров’я."); } break; } } Console.ReadLine(); } } class Vaga { public double zrist; public double vaga; public double vik; public double ideal; public double GetVag() { Console.WriteLine(); Console.Write("Введiть свiй зрiст в сантиментрах: "); zrist = Convert.ToDouble(Console.ReadLine()); Console.Write("Введiть свiй вiк: "); vik = Convert.ToDouble(Console.ReadLine()); ideal = ((zrist - 100) + (vik / 10)) - 2 * ((zrist - 100) / 10); Console.WriteLine("Ваша iдеальна вага складає: {0} кг.", ideal); return ideal; } public double GetVaga2() { //ІМТ (індекс маси тіла) = маса тіла в кг / (зріст в м * зріст в м) Console.WriteLine(); Console.Write("Введiть свою вагу в кiлограмах: "); vaga = Convert.ToDouble(Console.ReadLine()); Console.Write("Введiть свiй зрiст в метрах: "); zrist = Convert.ToDouble(Console.ReadLine()); ideal = vaga / (zrist * zrist); if (zrist < 1.68) { ideal = ideal * 0.9; } else if ((zrist >= 1.68) && (zrist < 1.88)) { ideal = ideal * 1; } else { ideal = ideal * 1.1; } Console.WriteLine(); Console.WriteLine("Ваш iндекс маси тiла: {0}", ideal); return ideal; } } }
Решение задачи: «Что не так с циклом if-else if?»
textual
Листинг программы
Vaga IMT = new Vaga(); var weight = IMT.GetVaga2(); if (weight < 25) Console.WriteLine("Вiд 18,5 до 25 – у вас все в порядку з вагою."); else if (weight < 30) Console.WriteLine("Вiд 25 до 30 – у вас спостерiгається надмiрна вага."); else if (weight < 35) Console.WriteLine("Вiд 30 до 35 – у вас перша ступiнь ожирiння."); else if (weight < 40) Console.WriteLine("Вiд 35 до 40 – у вас друга ступiнь ожирiння."); else Console.WriteLine("Бiльше 40 – у вас третя ступiнь ожирiння. Рiзко пiдвищений ризик для здоров’я.");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д