Ответы на задачи 24 (С1)
Скачать 1.99 Mb.
|
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('не принадлежит');
if x <= 1 then if y >= 1-x then if y >= x*x then write('принадлежит') else write('не принадлежит'); Обратите внимание, что второе условие проверяется в приведенной программе только тогда, когда истинно первое, а третье – только тогда, когда истинны первые два. В остальных ячейках (если условие не проверяется) нужно ставить прочерк:
Программы выводит какой-то ответ только тогда когда истинны первые два условия; в этом случае ответ зависит от истинности третьего условия:
Видим, что верно обрабатываются только областей А и В, для области D выводится неверный ответ (эта область закрашена, но программа выдает ответ «не принадлежит»), а для остальных никакого ответа не выводится.
Для исправления программы лучше всего составить новое сложное условие. Выделенная область может быть получена как объединение двух областей: области 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('не принадлежит');
if x >= 0 then if y <= 1 then if (x*x + y*y <= 1) and (y >= x-1) then write('принадлежит') else write('не принадлежит'); Обратите внимание, что второе условие проверяется в приведенной программе только тогда, когда истинно первое, а третье – только тогда, когда истинны первые два. В остальных ячейках (если условие не проверяется) нужно ставить прочерк:
|