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

Задание 5 Вариант 3 Самостоятельная работа 3 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)

Задача

Требовалось написать программу, при выполнении которой с клавиатуры вводятся координаты $$x$$ и $$y$$ точки на плоскости и определяется принадлежность этой точки закрашенной области единичной окружности.

Программист торопился и написал программу с ошибками:

var x, y: real;
begin
readln(x, y);
if $$x*x+y*y\leqslant1$$ then
if $$y\leqslant0$$ then
if $$x<0$$ then write(‘принадлежит’) else write(‘не принадлежит’)
end.

Выясните, как работает программа при значениях $$x$$ и $$y$$, принадлежащих областям А, В, С, D, Е, F, G, Н.

Анализ программы проведите, заполнив таблицу:

ОбластьУсловие $$x*x+y*y\leqslant1$$Условие $$y\leqslant0$$Условие $$x<0$$Сообщение программыКорректность сообщения

Предложите свой вариант программы, исключающий случаи её неправильной работы.

Подробный ответ

В программе проверяются три условия:

  • $$x^2+y^2 \le 1$$ — точка лежит внутри или на границе единичной окружности;
  • $$y \le 0$$ — точка находится на оси $$x$$ или ниже её;
  • $$x < 0$$ — точка находится слева от оси $$y$$.

Из-за вложенности операторов сообщение выводится только тогда, когда выполняются все три условия одновременно. Значит, программа правильно работает только для области F. Для области G первое и второе условия выполняются, но третье — нет, поэтому программа ошибочно выводит «не принадлежит». Во всех остальных областях сообщение не выводится.

Область$$x^2+y^2 \le 1$$$$y \le 0$$$$x < 0$$Сообщение программыКорректность сообщения
A———
B+———
C+———
D———
E———
F+++принадлежит+
G++—не принадлежит—
H———

Исправим программу так, чтобы она выводила ответ для любой точки:

program s3_v3_5;
var
  x, y: real;
begin
  write(‘x, y > ‘);
  readln(x, y);
  if (x * x + y * y <= 1) and (((x >= 0) and (y >= 0)) or ((x <= 0) and (y <= 0))) then
    writeln(‘принадлежит’)
  else
    writeln(‘не принадлежит’);
end.

Ответ

Программа правильно работает только для области F; для области G она ошибается, а для остальных областей не выводит сообщение. Исправленный вариант программы приведён выше.

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



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