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

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


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

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

Обл.

y <= 3-x*x

y >= 0

y >= x+1

вывод

верно?

A

нет







нет

B

нет







нет

C

да

нет





нет

D

да

нет





нет

E

да

да

нет

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

да

F

да

да

да

принадлежит

да

G

да

да

да

принадлежит

да

H

да

да

нет

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

нет

J

нет







нет

K

нет







нет

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

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

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

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

((y >= x+1) or { выше прямой }

(x>=0) and (y>=0)) { первый квадрант }

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

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

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

Область

Условие 1

(x>1)

Условие 2

(х>=7)

Условие 3

(х>13)

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

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


А

нет











В

нет











С

да

нет









D

да

да

нет







Е

да

да

да







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

Область

Условие 1

(x>1)

Условие 2

(х>=7)

Условие 3

(х>13)

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

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


А

нет







нет

В

нет







нет

С

да

нет





нет

D

да

да

нет

принадлежит

да

Е

да

да

да

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

да

Нужная область представляет собой объединение двух областей, которые описываются двойными неравенствами

-5 <= x <= 1 и 7 <= x <= 13

Поскольку в Паскале двойные неравенства использовать нельзя (а в некоторых языках, например, в школьном алгоритмическом языке системы КуМир – можно!), заменяем их на сложные условия с логической операцией «И» (and):

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

(7 <= x) and (x <= 13)

Для объединения областей два эти условия нужно объединить с помощью логической операции «ИЛИ» (or). Таким образом, получаем такое решение:

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

(7 <= x) and (x <= 13) then

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

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

Здесь учтено, что логическая операция «ИЛИ» имеет более низкий приоритет, чем «И», и поэтому выполняется последней.

  1. Эта задача полностью аналогична задача 35, поэтому приведем сразу ответ. Заполненная таблица:

Область

Условие 1

(x<=15)

Условие 2

(х<9)

Условие 3

(х<=3)

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

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


А

да

да

да

принадлежит

нет

В

да

да

да

принадлежит

да

С

да

да

нет

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

да

D

да

нет





нет

Е

нет







нет

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

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

(9 <= x) and (x <= 15) then

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

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

  1. Эта задача полностью аналогична задача 35, поэтому приведем сразу ответ. Заполненная таблица:

Область

Условие 1

(x<=14)

Условие 2

(х>=-4)

Условие 3

(х>=8)

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

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


А

да

нет





нет

В

да

да

нет

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

нет

С

да

да

нет

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

да

D

да

да

да

принадлежит

да

Е

нет







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


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