|
Вопрос # 3 518/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
После написания пробного ЕГЭ по информатике на дом задали разобрать и расписать ответы в другом варианте.
Подскажите, пожалуйста, правильно ли я ответил на задание С1? Если да, то что ещё стоило бы сказать?
Собственно задание:
Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (x, y - действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Область ограничена осью абсцисс, окружностью x<sup>2</sup> + y<sup>2</sup> = 2 и прямой x + y = 2. Заданные прямая и окружность касаются в точке x = 1, y = 1. Программист торопился и написал программу (форматирование сохранено) неправильно.
<table>
<td><code language="pascal">
var x, y: real;
begin
readln(x, y);
if x*x + y*y >= 2 then
if y >= 0 then
if x + y <= 2 then
write('Принадлежит')
else
write('Не принадлежит')
end.
</code></td><td><img src="http://s42.radikal.ru/i097/0912/5d/0cb5de4dafd6.png"></img></td></table>
Последовательно выполните следующие действия:
1) Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы)
Мой ответ:
1) x = 5, y = 1;
2) В программу Необходимо добавить проверку неотрицательности чисел x, y.
<code language="pascal">
var x, y: real;
begin
readln(x, y);
if (y >= 0 and x >= 0) and (x*x + y*y >= 2) and (x + y <= 2) then
write('Принадлежит')
else
write('Не принадлежит')
end.
</code>
p.s.: считать ли ошибкой то, что в первоначальной программе else распространялся только на начальное условие, а не на все три?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Примечание #1 (12 декабря 2009, 14:21):
 |
Вопрос задал: Arti (статус: Посетитель)
Вопрос отправлен: 12 декабря 2009, 14:18
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Паровоз
Здравствуйте, Arti!
Считаем, что правильная область - на рисунке (на который дана ссылка).
1) Наверно, вы написали x=-5, y=1. Для x=5, y=1 программа работает правильно.
2) Это условие не спасет, как полказывает пример x=0,y=2. Условие x>=0 нужно заменить на условие x>=1.
P.S. else всегда отвечает ближайшему if, т.е. последнему, поэтому здесь все правильно.
 |
Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 12 декабря 2009, 19:01
Оценка за ответ: 5
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|