Приведите пример таких чисел х и у, для которых программа выдает неправильный результат. Укажите, как можно доработать программу, чтобы исключить случаи неправильной работы.
Пример чисел, для которых программа выдаст неправильный результат: х = -3, у = -2. В этом случае программа выдаст результат "Принадлежит", хотя надо было выдать результат "Не принадлежит".
Для исключения случаев неправильной работы программы можно внести следующие изменения:
- В строке "if xx+yy>=4 then" добавить условие "and y <= 0", чтобы проверить, что значение у находится ниже или на высоте линии y = -2.
- Заменить оператор "If y<=x then" на "If y <= -x then", чтобы проверить, что значение у находится ниже или на диагонали y = -x.
Исправленная программа будет выглядеть следующим образом:
var x, y: real; begin readln(x, y); if x * x + y * y >= 4 then if y >= -2 and y <= 0 then if y <= -x then write('Принадлежит') else write('Не принадлежит') else write('Не принадлежит') else write('Не принадлежит'); end.
