Как включить цикл while 1 в matlab?

#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 были не одинаковыми.