#matlab #while-loop
Вопрос:
Я планирую сделать расчет ИМТ, в котором эта программа будет предлагать пользователю вводить новые данные повторно, пока оба входа являются положительными. В данном случае мой вклад-это вес и рост. Я применил while
цикл в своем коде. Однако, когда я ввожу два положительных входа и после того, как был выполнен расчет ИМТ, процесс заканчивается и завершается. Могу я узнать, какую строку я неправильно закодировал?
while 1 if (Weight gt; 0 amp;amp; Height gt; 0) Weight = input('Please Enter Your Weight In kg: '); Height = input('Please Enter Your Height In m : '); BMI = Weight/(Height^2); if (BMIlt;=18.5) disp(['Health condition: THIN. Your BMI is ', num2str(BMI)]); elseif (BMIgt;=18.6) amp;amp; (BMIlt;=24.9) disp(['Health condition: HEALTHY. Your BMI is ', num2str(BMI)]); elseif (BMIlt;=25) amp;amp; (BMIlt;=29.9) disp(['Health condition: OVERWEIGHT. Your BMI is ', num2str(BMI)]); else (BMIgt;=30) disp(['Health condition: OBESE. Your BMI is ', num2str(BMI)]); end break end end
Спасибо.
Ответ №1:
Во-первых, вы не можете вызвать оператор if, если условия веса и роста еще не определены с помощью приглашения. Так что тебе следует позвонить input()
раньше if
:
Weight = input('Please Enter Your Weight In kg: '); Height = input('Please Enter Your Height In m : '); if (Weight gt; 0 amp;amp; Height gt; 0)
Теперь вы можете запустить свой код. Ваша проблема в том break
. Вот как вы определили свой код:
while loop 1 (forever) prompt asking for weight and height if weight amp; height gt; 0 (positive) (...some other calculations and if) break
Если вы проверяете этот псевдокод, вы сообщаете своему коду, что если вес и рост положительны, разорвите цикл while, поэтому он останавливается. Правильное условие должно быть:
if weight amp; height gt; 0 (positive) run... else (not positive) break
Это ваш исправленный код:
while 1 Weight = input('Please Enter Your Weight In kg: '); Height = input('Please Enter Your Height In m : '); if (Weight gt; 0 amp;amp; Height gt; 0) BMI = Weight/(Height^2); if (BMIlt;=18.5) disp(['Health condition: THIN. Your BMI is ', num2str(BMI)]); elseif (BMIgt;=18.6) amp;amp; (BMIlt;=24.9) disp(['Health condition: HEALTHY. Your BMI is ', num2str(BMI)]); elseif (BMIlt;=25) amp;amp; (BMIlt;=29.9) disp(['Health condition: OVERWEIGHT. Your BMI is ', num2str(BMI)]); else (BMIgt;=30) disp(['Health condition: OBESE. Your BMI is ', num2str(BMI)]); end else break end end
Старайтесь всегда заботиться об идентификации. Ваш первый if
и его финал end
были не одинаковыми.