← Все вопросы

and or not в паскале, как проверить что число в диапазоне? скобки наверное

Задан 8 месяцев назад126 просмотров2 ответа
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, даже когда вроде не надо. лишние скобки не повредят, а ошибку 'на ровном месте' не словишь)

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект