Главная страница

Ответы на задачи 24 (С1)


Скачать 1.99 Mb.
НазваниеОтветы на задачи 24 (С1)
Дата21.04.2018
Размер1.99 Mb.
Формат файлаdoc
Имя файлаansw24-C1.doc
ТипПрограмма
#41783
страница7 из 18
1   2   3   4   5   6   7   8   9   10   ...   18

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))

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

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

  1. Это та же самая задача, что и 26, только переформулированная в соответствии с демо-вариантом ЕГЭ-2012. Сразу замечаем, что в программе else относится к последнему оператору if, то есть в самом деле структура кода такова:

if x <= 1 then

if y >= 1-x then

if y >= x*x then

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

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

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

Обл.

x <= 1

y >= 1-x

y >= x*x

вывод

верно?

A

да

да

нет







B

да

да

да







C

да

нет









D

да

да

нет







E

нет











F

да

нет









G

нет











H

нет











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

Обл.

x <= 1

y >= 1-x

y >= x*x

вывод

верно?

A

да

да

нет

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




B

да

да

да

принадлежит




C

да

нет








D

да

да

нет

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




E

нет










F

да

нет








G

нет










H

нет










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

Обл.

x <= 1

y >= 1-x

y >= x*x

вывод

верно?

A

да

да

нет

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

да

B

да

да

да

принадлежит

да

C

да

нет





нет

D

да

да

нет

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

нет

E

нет







нет

F

да

нет





нет

G

нет







нет

H

нет







нет

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

if ((y >= x*x) and (y >= 1-x) and (x <= 1))

{ синяя область над параболой и прямой }

or

((x >= 0) and (x <= 1) and (y >= 1-x)) { полоса над прямой }

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

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

Это условие можно немного упростить, заметив, что условия y >= 1-x и x <= 1 встречаются в условиях для обеих областей:

if (y >= 1-x) and { над прямой }

(x <= 1) and { слева от прямой x = 1}

((y >= x*x) or { выше параболы }

(x >= 0)) { справа от прямой x = 0 }

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

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

  1. Это та же самая задача, что и 27, только переформулированная в соответствии с демо-вариантом ЕГЭ-2012. Сразу замечаем, что в программе else относится к последнему оператору if, то есть в самом деле структура кода такова:

if x >= 0 then

if y <= 1 then

if (x*x + y*y <= 1) and (y >= x-1)

then

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

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

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

Обл.

x >= 0

y <= 1

(x*x+y*y<=1) and (y>=x-1)

вывод

верно?

A

да

да

да







B

да

да

нет







C

нет











D

нет











E

да

да

нет







F

да

да

нет







G

нет











H

да

нет









J

да

нет









K

нет










1   2   3   4   5   6   7   8   9   10   ...   18


написать администратору сайта