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

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


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

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

Обл.

y<=2-x?

y>=0?

y>=x*x?

вывод

верно?

A

да

да

нет

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




B

нет










C

да

да

да

принадлежит




D

да

да

нет

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




E

нет










F

нет










G

да

нет








H

нет










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

Обл.

y<=2-x?

y>=0?

y>=x*x?

вывод

верно?

A

да

да

нет

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

да

B

нет







нет

C

да

да

да

принадлежит

да

D

да

да

нет

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

нет

E

нет







нет

F

нет







нет

G

да

нет





нет

H

нет







нет

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

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

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

Обратите внимание: легко забыть условие x>=0 для области D!

В этой задаче обе области находятся под прямой y=2-x, поэтому это условие будет общим. Получаем:

C или D: (y <= 2-x) и

((y >= x*x) или (x >= 0) и (y >= 0) и (y <= x*x))

Переводим на язык программирования:

if (y<=2-x) and

((y>=x*x) or (x>=0) and (y>=0) and (y<=x*x)) then

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

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

Условие можно еще немного упростить:

if (y<=2-x) and (y>=0) and ((x>=0) or (y>=x*x)) then

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

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


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

Обл.

y>=0?

y>=2-x?

y<=x*x?

вывод

верно?

A

да

нет









B

да

да

да







C

да

нет









D

да

нет









E

да

да

нет







F

да

да

да







G

нет











H

нет











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

Обл.

y>=0?

y>=2-x?

y<=x*x?

вывод

верно?

A

да

нет








B

да

да

да

принадлежит




C

да

нет








D

да

нет








E

да

да

нет

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




F

да

да

да

принадлежит




G

нет










H

нет










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

Обл.

y>=0?

y>=2-x?

y<=x*x?

вывод

верно?

A

да

нет





нет

B

да

да

да

принадлежит

да

C

да

нет





нет

D

да

нет





нет

E

да

да

нет

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

да

F

да

да

да

принадлежит

нет

G

нет







нет

H

нет







нет
1   2   3   4   5   6   7   8   9   ...   18


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