infoegehelp.ru

Успешно сдать ЕГЭ по информатике
  • Главная
  • Контакты
  • Карта сайта
  • Помощь сайту
Важно
  • Демо варианты ЕГЭ
  • Учим числа: 2 в степени
  • Биты, байты, килобайты
Решение задач
  • Задачи вне основных разделов информатики
Разделы информатики
  • 2011-12-18-14-33-54Системы счисления
  • 2011-12-18-16-45-20Алгебра логики
  • 2011-12-18-16-55-26Программирование
  • 2011-12-18-16-53-40Кодирование информации
  • 2011-12-18-16-56-19Компьютерные сети и Интернет
  • -excelЭлектронные таблицы (Excel)
  • 2011-12-18-16-57-50Базы данных
  • 2011-12-18-16-58-50Графы
  • 2011-12-18-17-00-15Файловая система
  • Устройство компьютера
  • ПО компьютера

Разбор задачи C1 (демо ЕГЭ 2010)

Время выполнения-30 мин, уровень сложности-повышенный


Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (x,y – действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). Программист торопился и написал программу неправильно.

ПРОГРАММА
НА ПАСКАЛЕ
ПРОГРАММА
НА БЕЙСИКЕ
ПРОГРАММА
НА СИ
var x,y: real;
begin
  readln(x,y);
  if x*x+y*y>=4 then
    if x>= –2 then
      if y<= –x then
        write('принадлежит')
      else
        write('не принадлежит')
end.
INPUT x, y
IF x*x+y*y>=4 THEN
  IF x>= –2 THEN
    IF y<= –x THEN
      PRINT "принадлежит"
    ELSE
      PRINT "не принадлежит"
    ENDIF
  ENDIF
ENDIF
END
void main(void)
{ float x,y;
  scanf("% f % f",&x,&y);
  if (x*x+y*y>=4)
    if (x>= –2)
      if (y<= –x)
        printf("принадлежит");
      else
        printf("не принадлежит");
}

Последовательно выполните следующее:
1) Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это  можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы).

Решение:

1 часть:

Программа определяет область (x*x+y*y>=4)Λ(x>=–2)Λ(y<=–x) (когда выводит надпись: "принадлежит"):

задача C1 ЕГЭ по информатике 2010 выводит "принадлежит"

На рисунке видно, что необходимо еще одно ограниченичивающее неравенство, чтобы программа работала правильно:

y>=0.

Получаем,что программа работает корректно для области: A: (x*x+y*y>=4)Λ(x>=–2)Λ(y<=–x)Λ(y>=0):

задача C1 ЕГЭ по информатике 2010 верно выводит "принадлежит"

Программа работает корректно для области B: (x*x+y*y>=4)Λ(x>=–2)Λ(y>–x) (когда выводит надпись:"не принадлежит"):

задача C1 ЕГЭ по информатике 2010 выводит "не принадлежит"

Т.о. программа работает корректно только для области AVB:

задача C1 ЕГЭ по информатике 2010 работает верно

Выразим условия 1, 2 и 3 через Y1, Y2, Y3, Y4:

Y1=(x*x+y*y>=4)

Y2=(x>=–2)

Y3=(y<=–x)

Y4=(y>=0)

Область, где программа работает верно: A V B=Y1ΛY2ΛY3ΛY4 V Y1ΛY2Λ¬Y3 = Y1ΛY2Λ((Y3ΛY4)V¬Y3) = (x*x+y*y>=4)Λ(x>=–2)Λ((y<=–x)Λ(y>=0)V(y>-x)).

Область, где программа работает неверно: ¬(Y1ΛY2Λ((Y3ΛY4)V¬Y3))=¬Y1V¬Y2V((¬Y3V¬Y4)ΛY3)=¬Y1V¬Y2V(¬Y3ΛY3V¬Y4ΛY3) = ¬Y1V¬Y2V(0V¬Y4ΛY3) =¬Y1V¬Y2V(¬Y4ΛY3) = (x*x+y*y<4)V(x<–2)V((y<0)Λ(y<=–x)). Из этой области и нужно взять искомые x и y:

x=1, y=1.

2 часть:

Искомая закрашенная область А ограничена неравенствами:

x*x+y*y>=4,

x>=–2,

y<=–x,

y>=0.

На языке алгебры логики искомая область определяется так:

(x*x+y*y>=4)Λ(x>=–2)Λ(y<=–x)Λ(y>=0)

Доработка для корректной работы программы на языках программирования:

Бейсик Паскаль
IF x*x+y*y>=4 AND x>=–2 AND
y<=–x AND y>=0 THEN
  PRINT "принадлежит"
ELSE
  PRINT "не принадлежит"
if (x*x+y*y>=4) and (x>=–2) and
(y<=–x) and (y>=0) then
   write('принадлежит')
else
   write('не принадлежит')
Си Алгоритмический язык
if ((x*x+y*y>=4)&&(x>=–2)&&
(y<=–x)&&(y>=0))
  printf("принадлежит");
else
  printf("не принадлежит");
если x*x+y*y>=4 и x>=–2 и
y<=–x и y>=0 то
   вывод 'принадлежит'
иначе
   вывод 'не принадлежит'

Перейти к С1-2012.

Перейти к С1-2011.

Перейти к С1-2009.

Перейти к другим задачам.

 

Rambler's Top100

© Латыпова В.А., 2012-2020. Все права защищены.
Копирование материалов сайта только с разрешения администрации сайта