1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
(Сам и контр)
Задание 6 Вариант 2 Самостоятельная работа 3 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Босова, Босова, Аквилянов
11 класс
Класс
11
Предмет
Информатика
Автор
Босова, Босова, Аквилянов

Задание 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 — «не принадлежит» или не выводит сообщение при ошибочной структуре программы. Правильный вариант программы приведён выше.

Иллюстрация к решению «Задание 6 Вариант 2 Самостоятельная работа 3 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)», 1



Общая оценка
3.7 / 5
Другие учебники
Другие предметы