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

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

Задача

Программист торопился и написал программу с ошибками:
var х, у: real;
begin
readin(x, у);
if х*х+у*у < =1 then if y < =0 then if x < 0 then write ('принадлежит') else write(’не принадлежит') end. Выясните, как работает программа при значениях х и у, принадлежащих областям А, В, С, D, Е, F, G, Н. Анализ программы проведите, заполнив таблицу: Область Условие х*х + у*у < = 1 Условие У < = 0 Условие х < 0 Сообщение программы Корректность сообщения Предложите свой вариант программы, исключающий случаи её неправильной работы. Из-за неправильной структуры вложенного условного оператора программа не выдает сообщения, если не выполняется первое или второе условие. program s3_v2_6; var x, y: real; begin write('x, y > ‘);
readln(x, y);
if (x * x + y * y < 1) and ((x > = 0) or (y < = 0) and (x < = 0)) then writeln('принадлежит') else writeln('не принадлежит') end.

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

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

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



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