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

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


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

Исправленная программа на Паскале:

if (-4 <= x) and (x <= 2) or

(8 <= x) and (x <= 14) then

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

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

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

Обл.

y >= x*x-2

y <= 4-x*x

x >= 0

вывод

верно?

A

да

нет








B

нет










C

да

да

нет







D

да

да

нет







E

да

да

да







F

да

да

да







G

нет










H

нет










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

Обл.

y >= x*x-2

y <= 4-x*x

x >= 0

вывод

верно?

A

да

нет








B

нет










C

да

да

нет

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




D

да

да

нет

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




E

да

да

да

принадлежит




F

да

да

да

принадлежит




G

нет










H

нет










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

Обл.

y >= x*x-2

y <= 4-x*x

x >= 0

вывод

верно?

A

да

нет





нет

B

нет







нет

C

да

да

нет

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

нет

D

да

да

нет

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

да

E

да

да

да

принадлежит

да

F

да

да

да

принадлежит

да

G

нет







нет

H

нет







нет

Для исправления программы лучше всего составить новое сложное условие. Во-первых, вся выделенная область находится ниже параболы , поэтому условие имеет вид

(y <= 4-x*x) and (...)

где вместо многоточия нужно добавить некоторое условие. Закрашенная область может быть получена объединением двух областей: между параболами справа от оси OY ((x>=0) and (y>=x*x-2)) и во втором квадранте ((x<=0) and (y>=0)). Эти две области объединяются с помощью логической операции ИЛИ (or). Таким образом, получаем

if (y<=4-x*x) and

((x>=0) and (y>=x*x-2) { между параболами справа от OY }

or (x<=0) and (y>=0)) { второй квадрант }

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

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

  1. Эта задача похожа на задачи 35-37, только здесь три интервала:



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

Область

Условие 1

(x>=-5 or x<=1)

Условие 2

(x>=-3 and

x<=3)


Условие 3

(х>=-1 and x<=5)

Программа выведет

Область обрабатывается верно

А

да

нет





нет

В

да

нет





нет

С

да

да

нет

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

да

D

да

да

да

принадлежит

да

Е

да

да

да

принадлежит

нет

F

да

нет





нет

G

да

нет





нет

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

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

(x принадлежит [-5, -3]) или

(x принадлежит [-1, 1]) или

(x принадлежит [3, 5])

В переводе на Паскаль:

if (-5 <= x) and (x <= -3) or

(-1 <= x) and (x <= 1) or

(3 <= x) and (x <= 5) then

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

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

  1. Эта традиционная задача с областями имеет существенные отличия в условии. Во-первых, пугает большое количество областей, но при дальнейшем чтении условия выясняется, что заполнять таблицу для всех этих областей не нужно.

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

Итак, дана таблица (для улдобства к ней слева добавлен столбец с нумерацией строк):




Область

Условие 1

(х*х + у*у <= 25)

Условие 2 (у <= 4-х*х)

Условие 3 (y <= х+1)

Вывод

Верно

1




да












2













принадлежит

нет

3










нет




нет
1   ...   6   7   8   9   10   11   12   13   ...   18


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