Демоверсия ЕГЭ 2011
задание С1
задание С1
Уровень сложности задания: высокий
Максимальный балл за задание: 3.
Примерное время выполнения: 30 мин.
Умение применять на практике вложенные условные операторы в программе.
Как показывает практика, обычно авторы задания закладывают в программу две ошибки: математическую и программисткую. Математическая ошибка заключается либо в том, что программа не учитывает периодичность функции, либо в использовании условий нестройного неравенства вместо строго (или наоборот). Программисткая ошибка заключается в неправильно организованной проверке условия: ответ "не принадлежит" выдается далеко не для всех наборов входных данных, для которых он должен быть выдан. Первая ошибка исправляется введением дополнительного условия, вторая проще всего может быть исправлена заменой вложенных условных операторов на логическое выражение в условии.
Обратите внимание, что для верного ответа на первый вопрос достаточно указать любую подходящую пару исходных значений, независимо от причины, по которой программа выдаст неверный результат.
Обратите внимание, что для верного ответа на первый вопрос достаточно указать любую подходящую пару исходных значений, независимо от причины, по которой программа выдаст неверный результат.
Вариант 1
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ |
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
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ |
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
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ |
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
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы. Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ |
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
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы.
Программист торопился и написал программу неправильно.
ПРОГРАММА НА ПАСКАЛЕ |
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) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).