Ответы на задачи 24 (С1)
Скачать 1.99 Mb.
|
Исправленная программа на Паскале: if (-4 <= x) and (x <= 2) or (8 <= x) and (x <= 14) then write('принадлежит') else write('не принадлежит');
Программы выводит какой-то ответ только тогда когда истинны первые два условия; в этом случае ответ зависит от истинности третьего условия:
Видим, что верно обрабатываются только областей 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('не принадлежит');
В приведённой программе блок else относится к последнему (вложенному) условному оператору. Обратите внимание, что второе условие проверяется в приведенной программе только тогда, когда истинно первое, а третье – только тогда, когда истинны первые два. В остальных ячейках (если условие не проверяется) нужно ставить прочерк2:
Видим, что верно обрабатываются только областей 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('не принадлежит');
В приведённой программе блок else относится к последнему (вложенному) условному оператору. Обратите внимание, что второе условие проверяется в приведенной программе только тогда, когда истинно первое, а третье – только тогда, когда истинны первые два. Итак, дана таблица (для улдобства к ней слева добавлен столбец с нумерацией строк):
|