Демоверсия ЕГЭ 2011
задание С1 
Уровень сложности задания: высокий
Максимальный балл за задание: 3.
Примерное время выполнения: 30 мин.
Умение применять на практике вложенные условные операторы в программе.
Как показывает практика, обычно авторы задания закладывают в программу две ошибки: математическую и программисткую. Математическая ошибка заключается либо в том, что программа не учитывает периодичность функции, либо в использовании условий нестройного неравенства вместо строго (или наоборот). Программисткая ошибка заключается в неправильно организованной проверке условия: ответ "не принадлежит" выдается далеко не для всех наборов входных данных, для которых он должен быть выдан. Первая ошибка исправляется введением дополнительного условия, вторая проще всего может быть исправлена заменой вложенных условных операторов на логическое выражение в условии.
   Обратите внимание, что для верного ответа на первый вопрос достаточно указать любую подходящую пару исходных значений, независимо от причины, по которой программа выдаст неверный результат.
Вариант 1
Подготовка к ЕГЭ С1 2011, Каменск-Уральский, школа №21Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var x,y: real;
   begin
   readln(x,у);
   if x>=0 then
   if y>=0 then
   if y<=cos(x) then
   write('принадлежит')
   else
   write('не принадлежит')
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT x, у
   IF x>=0 THEN
   IF y>=0 THEN
   IF y<=cos(x) THEN
   PRINT "принадлежит"
   ELSE
   PRINT "не принадлежит"
   ENDIF
   ENDIF
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float x,y;
   scanf("%f%f",&x,&y);
   if (x>=0)
   if (y>=0)
   if (y<=cos(x))
    printf("принадлежит");
   else
   printf("He принадлежит");
   }
Последовательно выполните следующее:
1) Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 2
Подготовка к ЕГЭ С1 2011, Каменск-Уральский, школа №21Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var x,y: real;
   begin
   readln(x,у);
   if y>=0 then
   if x<=1.57 then
   if y<=sin(x) then
   write('принадлежит')
   else
   write('не принадлежит')
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT x, у
   IF y>=0 THEN
   IF x<=1.57 THEN
   IF y<=SIN(x) THEN
   PRINT "принадлежит"
   ELSE
   PRINT "не принадлежит"
   ENDIF
   ENDIF
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   {float x,y;
   scanf("%f%f",&x,&y);
   if (y>=0)
   if (x<=1.57)
   if (y<=sin(x))
   printf("принадлежит");
   else
   printf("He принадлежит");
   }
Последовательно выполните следующее:
1) Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 3
Подготовка к ЕГЭ С1 2011, Каменск-Уральский, школа №21Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var x,y: real;
   begin
   readln(x,у);
   if y<=0 then
   if y>=-1 then
   if y<=cos(x) then
   write('принадлежит')
   else
   write('не принадлежит')
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT x, у
   IF y<=0 THEN
   IF y>=-1 THEN
   IF y<=cos(x) THEN
   PRINT "принадлежит"
   ELSE
   PRINT "не принадлежит"
   ENDIF
   ENDIF
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float x,y;
   scanf("%f%f",&x,&y);
   if (y<=0)
   if (y>=-1)
   if (y<=cos(x))
   printf("принадлежит");
   else
   printf("He принадлежит");
   }
Последовательно выполните следующее:
1) Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 4
Подготовка к ЕГЭ С1 2011, Каменск-Уральский, школа №21Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var x,y: real;
   begin
   readln(x,у);
   if x>=0 then
   if y>=-1 then
   if y<=cos(x) then
   write('принадлежит')
   else
   write('не принадлежит')
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT x, у
   IF x>=0 THEN
   IF y>=-1 THEN
   IF y<=cos(x) THEN
   PRINT "принадлежит"
   ELSE
   PRINT "не принадлежит"
   ENDIF
   ENDIF
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float x,y;
   scanf("%f%f",&x,&y);
   if (x>=0)
   if (y>=-1)
   if (y<=cos(x))
   printf("принадлежит");
   else
   printf("He принадлежит");
   }
Последовательно выполните следующее:
1) Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 5
Требовалось написать программу, которая решает неравенство «(ах)/(х + b) > О» относительно х для любого ненулевого числа а и любого неотрицательного числа b и (а ≠ 0, b ≥ 0), введенных с клавиатуры, все числа считаются действительными. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var a,b,x: real;
   begin
   readln(a,b,x);
   if b = 0 then
   write('x > 0 или x < О')
   else
   if a > 0 then
   write('x > О или х <',-b)
   else
   write(-b,'< x <0');
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT a, b, x
   IF b = О THEN
   PRINT "x > О или х <0"
   ELSE
   IF a>0 THEN
   PRINT "x >0 или x<",-b
   ELSE
   PRINT -b,"<x<0"
   ENDIF
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float a,b,x;
   scanf("%f%f%f", &y,&y,&x);
   if (b==0)
   printf("x>0 или x<0");
   else
   if (a>0)
   printf("x>0 или x<%f",-b);
   else
   printf("%f<x<0",-b);
   }
Последовательно выполните три задания:
1) Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 6
Требовалось написать программу, которая решает уравнение «a|x| = b» относительно х для любых чисел а и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var a,b,x: real;
   begin
   readln(a,b,x);
   if a = 0 then
   if b = 0 then
   write ('любое число')
   else
   write ('нет решений')
   else
   if b = 0 then
   write('x = 0')
   else
   write('x =',b/a,' или х =',-b/a);
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT a, b, x
   IF a = 0 THEN
   IF b = 0 THEN
   PRINT "любое число"
   ELSE
   PRINT "нет решений"
   ENDIF
   IF b = 0 THEN
   PRINT "x = 0"
   ELSE
   PRINT "x =",b/a, " или х =",-b/a
   ENDIF
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float a,b,x;
   scanf("%f%f%f", &y,&y,&x);
   if (a==0)
   if (b==0)
   printf("любое число");
   else
   printf ("нет решений");
   else
   if (b==0)
   printf("x = 0");
   else
   printf("x=%f или x=%f", b/a,-b/a);
   }
Последовательно выполните три задания:
1) Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 7
Подготовка к ЕГЭ С1 2011, Каменск-Уральский, школа №21Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы.
Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var x,y: real;
   begin
   readln(x,у);
   if у<=х*х then
   if х<=1.5 then
   if y>=0 then
   write('принадлежит')
   else
   write('не принадлежит')
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT x, у
   IF x<=x*x THEN
   IF y<=1.5 THEN
   IF y>=0 THEN
   PRINT "принадлежит"
   ELSE
   PRINT "не принадлежит"
   ENDIF
   ENDIF
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float x,y;
   scanf("%f%f",&x,&y);
   if (y<=x*x)
   if (x<=1.5)
   if (y>=0)
   printf("принадлежит");
   else
   printf("He принадлежит");
   }
Последовательно выполните следующее:
1) Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 8
Требовалось написать программу, которая решает неравенство «(х - a)/(bx) > О» относительно х для любых ненулевых чисел а и b (b ≠ 0, a ≠ 0), введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var a,b,x: real;
   begin
   readln(a,b,x);
   if b>0 then
   write('x>',a,' или x <О')
   else
   if a > 0 then
   write('0 < х <', a)
   else
   write(a,'< x <0');
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT a, b, x
   IF b > О THEN
   PRINT "x>",a," или х<0"
   ELSE
   IF a > 0 THEN
   PRINT "0<x<",a
   ELSE
   PRINT a,"<x<0"
   ENDIF
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float a,b,x;
   scanf("%f%f%f", &y,&y,&x);
   if (b>0)
   printf("x>%f или x<0, a");
   else
   if (a>0)
   printf("0<x<%f",a);
   else
   printf("%f<x<0",a);
   }
Последовательно выполните три задания:
1) Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 9
Требовалось написать программу, которая решает неравенство «(x+a)/(bx) < О» относительно х для любого ненулевого числа b и любого неотрицательного числа a и (а≥0, b≠0), введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var a,b,x: real;
   begin
   readln(a,b,x);
   if a = 0 then
   if b > 0 then
   write ('нет решений')
   else
   write('x > О или х <0')
   else
   write(-a,'< x <0');
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT a, b, x
   IF a = О THEN
   IF b > О THEN
   PRINT "нет решений"
   ELSE
   PRINT "x>0 или x<0"
   ENDIF
   ELSE
   PRINT -a,"<x<0"
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float a,b,x;
   scanf("%f%f%f", &y,&y,&x);
   if (a==0)
   if (b>0)
   printf("нет решений");
   else
   printf("x>0 или x<0");
   else
   printf("%f<x<0",-a);
   }
Последовательно выполните три задания:
1) Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Вариант 10
Требовалось написать программу, которая решает уравнение «x2 + c = 0» относительно х для любого числа с, введенного с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ
var с,x: real;
   begin
   readln(с,x);
   if с>0 then
   write ('нет решений')
   else
   write('x=',sqrt(-c),' или х =',-sqrt(-c));
   end.
ПРОГРАММА НА БЕЙСИКЕ
INPUT c, x
   IF с>0 THEN
   PRINT "нет решений"
   ELSE
   PRINT "x =",SQR(-c), или х =",-SQR(-c)
   ENDIF
   END
ПРОГРАММА НА СИ
void main(void)
   { float c,x;
   scanf("%f%f", &y,&x);
   if (с>0)
   printf ("нет решений");
   else
   printf("x=%f или x=%f",sqrt(-c),-sqrt(-c));
   }
Последовательно выполните три задания:
1) Приведите пример таких чисел c, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Используются технологии uCoz