Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

С1_31_2012.JPGЗадача 2. 31Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно. Вот она:

var x, y: real;

begin

readln(x, y);

if y >= 0 then

if x <= 1 then

if y >= x*x then

write('принадлежит')

else

write('не принадлежит');

end.

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F). Точки, лежащие на границах областей, отдельно не рассматривать.

В столбцах условий укажите "да", если условие выполнится, "нет" если условие не выполнится, "—" (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите "да" или "нет".

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

С1_31_2012.JPGРешение. Второе условие проверяется в программе только тогда, когда истинно первое, а третье – только тогда, когда истинны первые два. В остальных ячейках (если условие не проверяется) нужно ставить прочерк:

Обл.

y >= 0

x <= 1

y >= x*x

вывод

верно?

A

да

да

да

принадлежит

да

B

да

нет

нет

C

да

нет

нет

D

да

да

нет

не принадлеж

да

E

да

да

нет

не принадлеж

нет

F

нет

нет

Для исправления программы лучше всего составить новое сложное условие. Выделенная область может быть получена как объединение двух областей: области выше параболы y >= x*x и квадрата с единичной стороной, левый нижний угол которого находится в начале координат:

НЕ нашли? Не то? Что вы ищете?

if ((y >= x*x) and (x <= 1)) or ((x >= 0) and (x <= 1) and (y >= 0) and (y <= 1))

then write('принадлежит')

else write('не принадлежит');

Для квадрата ограничение сверху по координате Y несущественно (вся область прямо над квадратом выделена), и можно заменить квадрат на верхнюю часть полосы, убрав последнее условие: if ((y >= x*x) and (x <= 1)) or ((x >= 0) and (x <= 1) and (y >= 0).

Задача 3. 29Начнем с заполнения таблицы. Обратите внимание, что второе условие проверяется в приведенной программе только тогда, когда истинно первое, а третье – только тогда, когда истинны первые два. В остальных ячейках (если условие не проверяется) нужно ставить прочерк:

Программа выводит ответ только тогда когда истинны первые два условия; в этом случае ответ зависит от истинности третьего условия:

Верно обрабатываются только области B и E, для области F выводится неверный ответ (эта область не закрашена, но программа выдает ответ «принадлежит»), а для остальных никакого ответа не выводится.

Обл.

y>=0?

y>=2-x?

y<=x*x?

вывод

верно?

A

да

нет

нет

B

да

да

да

принадлежит

да

C

да

нет

нет

D

да

нет

нет

E

да

да

нет

не принадлежит

да

F

да

да

да

принадлежит

нет

G

нет

нет

H

нет

нет

построить условия для каждой из закрашенных областей, и затем объединить их с помощью операции ИЛИ. Записываем условия для обеих интересующих нас областей (B и D)

B: (y >= 2-x) и (y >= x*x) и (x <= 0)

D: (y <= 2-x) и (x >= 0) и (y >= 0) и (y <= x*x)

Легко забыть условие x<=0 для области B и условие x>=0 для области D!

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6