Задание 6 Вариант 2 Самостоятельная работа 3 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Требовалось написать программу, при выполнении которой с клавиатуры вводятся координаты $$x$$ и $$y$$ точки на плоскости и определяется принадлежность этой точки закрашенной области единичной окружности.
Программист торопился и написал программу с ошибками:
var x, y: real;
begin
readln(x, y);
if x*x + y*y <= 1 then
if y <= 0 then
if x < 0 then write (‘принадлежит’) else write (‘не принадлежит’)
end.
Выясните, как работает программа при значениях $$x$$ и $$y$$, принадлежащих областям А, В, С, D, Е, F, G, Н.
Анализ программы проведите, заполнив таблицу:
| Область | Условие $$x*x+y*y<=1$$ | Условие $$y<=0$$ | Условие $$x<0$$ | Сообщение программы | Корректность сообщения |
|---|
Предложите свой вариант программы, исключающий случаи её неправильной работы.
Программа проверяет три условия:
- $$x^2+y^2 \le 1$$ — точка лежит внутри или на границе единичной окружности;
- $$y \le 0$$ — точка находится на оси $$Ox$$ или ниже её;
- $$x < 0$$ — точка слева от оси $$Oy$$.
Из-за вложенности операторов сообщение «принадлежит» выводится только тогда, когда выполняются все три условия. Во всех остальных случаях программа выводит «не принадлежит» или вообще не выводит сообщение, если первое условие не выполнено.
| Область | $$x^2+y^2 \le 1$$ | $$y \le 0$$ | $$x < 0$$ | Сообщение программы | Корректность сообщения |
|---|---|---|---|---|---|
| A | — | — | — | ||
| B | + | — | — | — | |
| C | + | — | — | — | |
| D | — | — | — | ||
| E | — | — | — | ||
| F | + | + | + | принадлежит | + |
| G | + | + | — | не принадлежит | — |
| H | — | — | — |
Чтобы программа работала правильно, нужно объединить все условия в одно логическое выражение и обязательно предусмотреть ветвь else:
program s3_v2_6;
var
x, y: real;
begin
write(‘x, y > ‘);
readln(x, y);
if (x * x + y * y <= 1) and (y <= 0) and (x < 0) then
writeln(‘принадлежит’)
else
writeln(‘не принадлежит’);
end.
Ответ
Только для области F программа выводит «принадлежит»; для областей A, B, C, D, E, G, H — «не принадлежит» или не выводит сообщение при ошибочной структуре программы. Правильный вариант программы приведён выше.


