Ответы на задачи 24 (С1)
Скачать 1.99 Mb.
|
Наконец, для четвертой строки третье условие не проверяется, значит, первое истинно. Второе проверяется, и результат верный. Это значит, что второе условие истинно и выведено сообщение «принадлежит». Это точки, расположенные выше параболы и внутри круга, то есть области F, G, L и M.
Для того, чтобы написать правильную программу, составим одно сложное условие. Проще всего сложить полную область из трех:
(y>=x*x-6) and (x*x+y*y<=16)
Остается объединить эти области с помощью операции ИЛИ: if (y>=x*x-6) and (x*x+y*y<=16) or (y>=x*x-6) and (y<=0) or (x*x+y*y<=16) and (x>=0) then write('принадлежит') else write('не принадлежит');
Напомним программу: if y >= 1-x then begin if y <= 2-2*x*x then write('принадлежит') end else if y >= x*x-5 then write('принадлежит') else write('не принадлежит') В строке 1 ничего не выводится, значит ответ неверный. Такой вариант (отсутствие вывода) говорит о том, что первое условие выполнено, а второе – нет. То есть, эта область расположена выше прямой и выше параболы y = 2 - 2x2; это могут быть область B, C, D, N, P:
Теперь рассмотрим строку 2. Программа выдает ответ «принадлежит», что может быть
При этом ответ «принадлежит» неверный. Поскольку ВСЕ точки, для которых выполняются первые два условия, принадлежат заштрихованной области G, первый вариант исключается. Поэтому для второй строки первое условие ложно (точки ниже прямой), второе не проверяется, а третье – истинно (точки выше параболы y = x2 - 5); эти области не заштрихованы, поэтому это могут быть только области K и L:
Третья строка. Сообщение «не принадлежит» выводится для точек, которые ниже прямой и ниже параболы y = x2 - 5, эти точки не принадлежат выделенной области; это могут быть области A, H, Q, R.
Наконец, для четвертой строки третье условие не проверяется, значит, первое истинно. Второе проверяется, и результат верный. Это значит, что второе условие истинно и выведено сообщение «принадлежит». Это точки, расположенные выше прямой и ниже параболы y = 2 - 2x2, то есть область G.
Для того, чтобы написать правильную программу, составим одно сложное условие. Проще всего сложить полную область из трех:
and (x >= 0) Остается объединить эти области с помощью операции ИЛИ: if (y >= 1-x) and (y < 2-2*x*x) or (y <= 1-x) and (y >= 0) and (y >= x*x-5) or (y <= 1-x) and (y >= 2-2*x*x) and (y >= x*x-5) and (x >= 0) then write('принадлежит') else write('не принадлежит'); Возможен и более хитрый способ:
(y <= 1-x) and (y >= x*x-5) and (y >= 2-2*x*x) |