Проверка на ценность в пределах границ - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь создать функцию, которая будет проверять, находится ли значение в пределах выбранных границ, и если это не так, пользователь должен повторить попытку до проверки.

Я хотел знать, почему мой код пропускает условие if для любого заданного значения, и он возвращает меня для приглашения ввода: "Ошибка: недопустимое выражение. Проверьте пропущенный оператор умножения, пропущенные или несбалансированные разделители или другую синтаксическую ошибку."

A=limit(5pi/6,-pi/2,pi/2) например, непосредственно переходит к условию else, пока оно true для условия if

Вот мой код:


function alpha = limit(pos,min,max)

 if (pos >= max) && (pos <= min) 
     alpha=pos;
 else
     while pos >= max || pos <= min 
        prompt = 'Enter value between max and min';
        alpha = input(prompt);
    end 
 end

end

1 Ответ

1 голос
/ 07 апреля 2020

Функция сначала проверяет, является ли pos и большим или равным max и меньшим или равным min.

I ожидать, что вы намереваетесь max быть больше, чем min. Следовательно, строка if должна быть:

if (pos <= max) && (pos >= min)

Я предполагаю, что ваши val_max / val_min являются опечатками (и должны быть max / min). Тогда Ваш while l oop зависит от значения pos. Но pos никогда не обновляется в l oop, поэтому ваш l oop просто будет повторяться вечно.

Вам необходимо обновить pos внутри while l oop для это на работу. Попробуйте что-то вроде этого:

function alpha = limit(pos,min,max)

    while pos > max || pos < min 
        prompt = 'Enter value between min and max';
        pos = input(prompt);
    end 

    alpha = pos;

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...