← Все вопросы
and or not в паскале, как проверить что число в диапазоне? скобки наверное
5
Надо проверить, что число от 10 до 20 (включительно). Пишу через and, а паскаль ругается ошибкой прямо на условии. Не пойму как объединять два условия.
var
n: integer;
begin
readln(n);
if n >= 10 and n <= 20 then
writeln('в диапазоне')
else
writeln('нет');
end.
2 ответа
11
✓ Принятый ответ — помог автору
Проблема в скобках! В паскале and имеет приоритет выше, чем сравнения, поэтому он пытается сначала вычислить 10 and n и путается. Каждое условие надо обернуть в скобки:
var
n: integer;
begin
readln(n);
if (n >= 10) and (n <= 20) then
writeln('в диапазоне')
else
writeln('нет');
end.
Теперь работает. Правило простое: при and/or каждое сравнение бери в свои круглые скобки (n >= 10) and (n <= 20).
Что значат операторы:
- and — 'И', оба условия должны быть истинны (число И больше 10, И меньше 20).
- or — 'ИЛИ', хватает одного истинного. Например
(n < 0) or (n > 100)— за границами. - not — 'НЕ', переворачивает.
not (n = 5)= 'не равно 5'.
Запомни главное про паскаль: скобки вокруг каждого условия обязательны, без них почти всегда ошибка.
4
я просто на автомате теперь любое условие в скобки заворачиваю при and/or, даже когда вроде не надо. лишние скобки не повредят, а ошибку 'на ровном месте' не словишь)
Ваш ответ
Войдите, чтобы ответить на вопрос.