
Решение:
1. Будем заполнять
таблицу по столбцам, последовательно
проверяя выполнение каждого из условий
для соответствующих областей.
Условие
у >= –x * х
задает часть координатной плоскости,
расположенную снаружи ветвей параболы
y = –x2 –
области A, B, C, D, F, H. Для
строк A, B, C, D, F, H указываем
«да», для строк E, G – «нет».
Условие
y >= –х –
2 задает
часть координатной плоскости, расположенную
выше прямой y = –x – 2,
– области A, B, E, F. Однако это
условие, согласно тексту программы,
проверяется только в том случае, если
истинно условие у >= –x * x,
то есть для тех строк таблицы, где мы
указали «да» в столбце «Условие 1 (у >= –x * x)».
При этом, если выполняются и условие 1,
и условие 2, то в столбце
«Условие 2 (у >= –x – 2)»
указываем «да» (строки А, В и F
таблицы). Для тех строк таблицы, где мы
указали «нет» в столбце
«Условие 1 (у >= –x * x)»,
условие у >= –x – 2 не
проверяется, и поэтому в этих строках
в столбце «Условие 2 (у >= –x – 2)»
мы должны поставить прочерк.
Условие
y <= 0
задает часть координатной плоскости,
расположенную ниже оси ОХ,
– области B, D, E, F, G, H. Однако,
аналогично вышеизложенному, условие
y <= 0 проверяется только в том
случае, если истинно условие у >= –x * x
и истинно условие у >= –x – 2,
то есть для тех строк таблицы, где мы
указали «да» в столбце «Условие 2 (у >= –x – 2)».
Таким образом, в столбце «Условие 3 (y <= 0)»
ответ «да» ставим в строках В и F,
ответ «нет» – в строке А. Для
остальных строк условие 3 не проверяется,
и в соответствующей строке таблицы
ставим прочерк.
Теперь
обратимся к тексту программы.
Программа
выведет ответ «принадлежит», если все
три условия истинны (в таблице –
три «да» в строке). Программа выведет
ответ «не принадлежит», если истинны
два первых условия и ложно третье
(в таблице – «да»|«да»|«нет» в
строке). В остальных случаях программа
ничего на экран выводить не будет.
Программа
верно работает только для областей А и В.
Для точек из области F будет выведен
ответ «принадлежит», хотя она не является
заштрихованной, то есть точки из области F
обрабатываются неверно, так же, как и
точки областей C, D, E, G и H,
для которых программа «не скажет»
ничего.
2.
Теперь доработаем программу.
Рассматривается
алгоритм на языке Паскаль.
Из
вышепроведенного анализа становится
ясно, что для верной работы программы
необходимо, чтобы и для точек из
областей C, D, E, F, G и H
выдавался ответ «не принадлежит», как
это выдается для области А.
Так как
программа выводит «принадлежит» и для
области В, и для области F, то, чтобы
исключить область F, следует к уже
имеющимся условиям добавить условие x <= 0.
Кроме того, чтобы на экран выдавалась
информация про точки из областей
C, D, E, G и H, все условия
следует соединить операцией AND (И).
Тогда
доработанная программа будет выглядеть
так:
Возможны
другие способы доработки.
Ответ:
1.
2.
Доработанная программа (Паскаль):
Возможны
другие способы доработки.
Задание C2. |
Дан
целочисленный массив из 20 элементов.
Элементы массива могут принимать
целые значения от 0 до 1000. Опишите
на русском языке или на одном из языков
программирования алгоритм, позволяющий
найти и вывести минимальное значение
среди элементов массива, которые имеют
четное значение и не делятся на три.
Гарантируется, что в исходном массиве
есть хотя бы один элемент, значение
которого четно и не кратно трем.
Исходные
данные объявлены так, как показано
ниже. Запрещается использовать
переменные, не описанные ниже, но
использовать все описанные переменные
необязательно.
|