≡ информатика
сайты - меню - вход - новости




Школа экспертов
Вернуться на основную страницу «Школы экспертов»

Ниже представлены ученические решения экзаменационных заданий. Оцените каждое из них в соответствии с критериями проверки заданий ЕГЭ. После нажатия кнопки «Проверить» вы узнаете правильный балл за каждое из решений. В конце будут подведены итоги.

Задание 3787
Задание 3788
Задание 5372
Задание 5436


Задание № 3787

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

 

БейсикПаскаль

INPUT х, у

IF x*x + у*у <= 49 THEN

IF x*x + у*у >= 16 THEN

PRINT "принадлежит"

ELSE

PRINT "не принадлежит"

ENDIF

END IF

END

var x, у: real;

begin

readln(x,y);

if x*x + y*y <= 49 then

if x*x + y*y >= 16 then

write('принадлежит')

else

write('не принадлежит')

end.

Си++Алгоритмический

#include <iostream>

using namespace std;

int main (void) {

float x,y;

cin >> x >> y;

if (x*x + y*y <= 49)

if (x*x + y*y >= 16)

cout << "принадлежит";

else

cout << "не принадлежит";

}

алг

нач

вещ х,у

ввод х,у

если х*х + у*у <= 49 то

если х*х + у* у >= 16 то

вывод 'принадлежит'

иначе

вывод 'не принадлежит'

все

все

кон

Python

x,y = float(input())

if x*x + у*у <= 49:

    if x*x + у*у >= 16:

        print("принадлежит")

    else:

        print("не принадлежит")

 

 

Последовательно выполните следующее.

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D). Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".

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

 

ОбластьУсловие 1

(х*х+у*у <= 49)

Условие 2

(х*х+у*у >= 16)

Программа выведетОбласть

обрабатывается верно

A
В
С
D

Пояснение

1.Таблица:

 

ОбластьУсловие 1

(х*х+у*у <= 49)

Условие 2

(х*х+у*у >= 16)

Программа выведетОбласть

обрабатывается верно

Aданетне принадлежитнет
Вданетне принадлежитда
Сдадапринадлежитда
Dнетнет

 

 

2. Возможная доработка (Паскаль):

 

if (х*х+у*у >= 16) and (х*х+у*у <= 49) or (x*x+y*y <= 1) then

write('принадлежит') else

write('не принадлежит')

 

Возможны и другие способы доработки. Пример:

 

if х*х + у*у >= 16 then if x*x + у*у <= 49 then write('принадлежит') else

write{'не принадлежит') else

if x*x + у*у <= 1

write('принадлежит')

else

write{'не принадлежит')



Указания по оцениванию.

 

Об­ра­ти­те вни­ма­ние! В задаче требовалось выполнить три действия: указать для каждой области, как будет работать программа, что она выведет на экран и правильно ли это (в виде таблицы), и исправить две ошибки. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия.

1. Верное заполнение предложенной таблицы.

2. Неправильное использование условного оператора, в результате чего при невыполнении первого условия программа не выдавала ничего (отсутствует ветвь ELSE). Исправлением этой ошибки может быть либо добавление ветви ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции.

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

3. Приведенных трех ограничений не достаточно для описания двух областей (потеряно условие x*x + y*y <= 1). Исправлением этой ошибки может быть использование одного условия с логическими операциями конъюнкции и дизъюнкции, либо использование вложенных условий с ветвями ELSE. В сложных случаях это действие считается выполненным, если верно определены закрашенные области, то есть программа выводит сообщение «принадлежит» для всех точек закрашенных областей и только для них, для точек вне закрашенных областей программа выводит «не принадлежит» или не выводит ничего. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.

 

Критерии оценивания выполнения заданияБаллы
Правильно выполнены оба пункта задания. Исправлены две ошибки. Программа для всех пар (x,y) верно определяет принадлежность точки заштрихованной области. Допускается наличие ошибок в одной из строк таблицы.3
1. Правильно выполнены два действия из трех (исправлены обе ошибки, но в первом пункте задания не приведена таблица (либо таблица содержит ошибки в двух и более строках), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «x*x + y*y <= 1» используется «x*x + y*y< 1».

2. Или выполнены все три действия, но при этом в логическом выражении неверно учтены приоритеты логических операций (не расставлены или неправильно расставлены скобки в выражениях).

2
Правильно выполнено только одно действие из трех, то есть, либо только приведена таблица, которая содержит ошибки в не более чем одной строке, либо таблица не приведена (или приведена и содержит ошибки более чем в одной строке), но исправлена одна ошибка программы. При оценивании этого задания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот).1
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена, либо содержит ошибки в двух и более строках, программа не приведена, либо ни одна из двух ошибок не исправлена).0

Максимальный балл

3


Пример 1.

 

Оцените это решение в баллах:

Пример 2.

 

Оцените это решение в баллах:

Пример 3.

 

Оцените это решение в баллах:

Пример 4.

 

Оцените это решение в баллах:



Задание № 3788

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

 

БейсикПаскаль

INPUT х, у

IF х*х + у*у >=1 THEN

IF x*x + у*у >= 49 THEN

PRINT "принадлежит"

ELSE

PRINT "не принадлежит"

ENDIF

END IF

END

var x, у: real;

begin

readln(x,y);

if x*x + y*y >= 1 then

if x*x + y*y >= 49 then

write('принадлежит')

else

write('не принадлежит')

end.

Си++Алгоритмический язык

#include <iostream>

using namespace std;

int main (void) {

float x,y;

cin >> x >> y;

if (x*x + y*y >= 1 )

if (x*x + y*y >= 49)

cout << "принадлежит";

else

cout << "не принадлежит";

}

алг

нач

вещ х,у

ввод х,у

если х*х + у*у >= 1 то

если х*х + у* у >= 49 то

вывод 'принадлежит'

иначе

вывод 'не принадлежит'

все

все

кон

Python

x,y = float(input())

if x*x + y*y >= 1 :

    if x*x + y*y >= 49:

        print("принадлежит")

    else:

        print("не принадлежит")

 

 

Последовательно выполните следующее.

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D).

Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".

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

 

ОбластьУсловие 1

(х*х+у*у >= 1)

Условие 2

(х*х+у*у >= 49)

Программа выведетОбласть

обрабатывается верно

A
В
С
D

Пояснение

1. Таблица:

 

ОбластьУсловие 1

(х*х+у*у >= 1)

Условие 2

(х*х+у*у >= 49)

Программа выведетОбласть

обрабатывается верно

Aнетнет
Вданетне принадлежитнет
Сданетне принадлежитда
Dдадапринадлежитда

 

 

2. Возможная доработка (Паскаль):

 

if <х*х+у*у <= 16) and (х*х+у*у >= 1) or (x*x+y*y >= 49) then

write('принадлежит') else

write('не принадлежит')

 

Возможны и другие способы доработки. Пример:

 

if х*х + у*у <= 16 then if x*x + у*у >= 1 then write('принадлежит') else

write{'не принадлежит') else

if x*x + у*у >= 49

write('принадлежит')

else

write{'не принадлежит')



Указания по оцениванию.

 

Обратите внимание! В за­да­че тре­бо­ва­лось вы­пол­нить три действия: ука­зать для каж­дой области, как будет ра­бо­тать программа, что она вы­ве­дет на экран и пра­виль­но ли это (в виде таблицы), и ис­пра­вить две ошибки. Баллы за дан­ное за­да­ние на­чис­ля­ют­ся как сумма бал­лов за вер­ное вы­пол­не­ние каж­до­го действия.

1. Вер­ное за­пол­не­ние пред­ло­жен­ной таблицы.

2. Не­пра­виль­ное ис­поль­зо­ва­ние услов­но­го оператора, в ре­зуль­та­те чего при не­вы­пол­не­нии пер­во­го усло­вия про­грам­ма не вы­да­ва­ла ни­че­го (отсутствует ветвь ELSE). Ис­прав­ле­ни­ем этой ошиб­ки может быть либо до­бав­ле­ние ветви ELSE к каж­до­му усло­вию IF, либо объ­еди­не­ние всех усло­вий IF в одно при по­мо­щи конъюнкции.

В слож­ных слу­ча­ях это дей­ствие счи­та­ет­ся выполненным, если про­грам­ма вы­да­ет одно из двух со­об­ще­ний «принадлежит» или «не принадлежит» для любых пар (x,y), при этом про­грам­ма не стала ра­бо­тать хуже, чем раньше, то есть для всех точек, для ко­то­рых про­грам­ма ранее вы­да­ва­ла вер­ный ответ, до­ра­бо­тан­ная про­грам­ма также долж­на вы­да­вать вер­ный ответ.

3. При­ве­ден­ных трех огра­ни­че­ний не до­ста­точ­но для опи­са­ния двух об­ла­стей (потеряно усло­вие x*x + y*y <= 16). Ис­прав­ле­ни­ем этой ошиб­ки может быть ис­поль­зо­ва­ние од­но­го усло­вия с ло­ги­че­ски­ми опе­ра­ци­я­ми конъ­юнк­ции и дизъюнкции, либо ис­поль­зо­ва­ние вло­жен­ных усло­вий с вет­вя­ми ELSE. В слож­ных слу­ча­ях это дей­ствие счи­та­ет­ся выполненным, если верно опре­де­ле­ны за­кра­шен­ные области, то есть про­грам­ма вы­во­дит со­об­ще­ние «принадлежит» для всех точек за­кра­шен­ных об­ла­стей и толь­ко для них, для точек вне за­кра­шен­ных об­ла­стей про­грам­ма вы­во­дит «не принадлежит» или не вы­во­дит ничего. В ра­бо­те (во фраг­мен­тах программ) до­пус­ка­ет­ся на­ли­чие от­дель­ных син­так­си­че­ских ошибок, не ис­ка­жа­ю­щих за­мыс­ла ав­то­ра решения.

 

Критерии оце­ни­ва­ния вы­пол­не­ния заданияБаллы
Правильно вы­пол­не­ны оба пунк­та задания. Ис­прав­ле­ны две ошибки. Про­грам­ма для всех пар (x,y) верно опре­де­ля­ет при­над­леж­ность точки за­штри­хо­ван­ной области. Допускается на­ли­чие оши­бок в одной из строк таблицы.3
1. Пра­виль­но вы­пол­не­ны два дей­ствия из трех (исправлены обе ошибки, но в пер­вом пунк­те за­да­ния не при­ве­де­на таб­ли­ца (либо таб­ли­ца со­дер­жит ошиб­ки в двух и более строках), либо при­ве­де­на таб­ли­ца (которая со­дер­жит ошиб­ки не более чем в одной строке), но ис­прав­ле­на толь­ко одна ошиб­ка программы). При на­пи­са­нии опе­ра­ций срав­не­ния до­пус­ка­ет­ся одно не­пра­виль­ное ис­поль­зо­ва­ние строгих/нестрогих не­ра­венств (считается не­су­ще­ствен­ной ошибкой, по­греш­но­стью записи). Например, вме­сто «x*x + y*y <= 16» ис­поль­зу­ет­ся «x*x+y*y<16».

2. Или вы­пол­не­ны все три действия, но при этом в ло­ги­че­ском вы­ра­же­нии не­вер­но учте­ны при­о­ри­те­ты ло­ги­че­ских опе­ра­ций (не рас­став­ле­ны или не­пра­виль­но рас­став­ле­ны скоб­ки в выражениях.

2
Правильно вы­пол­не­но толь­ко одно дей­ствие из трех, то есть, либо толь­ко при­ве­де­на таблица, ко­то­рая со­дер­жит ошиб­ки в не более чем одной строке, либо таб­ли­ца не при­ве­де­на (или при­ве­де­на и со­дер­жит ошиб­ки более чем в одной строке), но ис­прав­ле­на одна ошиб­ка программы. При оце­ни­ва­нии этого за­да­ния на 1 балл до­пус­ка­ет­ся не учи­ты­вать кор­рект­ность ра­бо­ты про­грамм на точ­ках гра­ниц об­ла­стей (вместо не­стро­гих не­ра­венств в ре­ше­нии были ис­поль­зо­ва­ны стро­гие не­ра­вен­ства или наоборот).1
Все пунк­ты за­да­ния вы­пол­не­ны не­вер­но (таблица ана­ли­за пра­виль­но­сти ал­го­рит­ма не приведена, либо со­дер­жит ошиб­ки в двух и более строках, про­грам­ма не приведена, либо ни одна из двух оши­бок не исправлена).0
Максимальный балл3


Пример 1.

 

Оцените это решение в баллах:

Пример 2.

 

Оцените это решение в баллах:

Пример 3.

 

Оцените это решение в баллах:

Пример 4.

 

Оцените это решение в баллах:

Пример 5.

 

Оцените это решение в баллах:

Пример 6.

 

Оцените это решение в баллах:



Задание № 5372

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)

 

БейсикПаскаль

DIM N AS LONG

INPUT N

sum = 1

WHILE N > 1

N = N \ 10

sum = sum + 1

WEND

PRINT sum

END

var N: longint;

sum: integer;

begin

readln(N);

sum := 1;

while N > 1 do

begin

N := N div 10;

sum := sum + 1;

end;

writeln(sum);

end.

Си++Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N;

int sum;

cin >> N;

sum = 1;

while (N > 1)

{

N = N /10;

sum = sum + 1;

}

cout « sum « endl;

}

алг

нач

цел N, sum

ввод N

sum := 1

нц пока N > 1

N := div(N, 10)

sum := sum + 1

кц

вывод sum

кон

Python

n = int(input())

sum = 1

while n > 1:

    n //= 10

    sum += 1

print(sum)

 

 

Последовательно выполните следующее.

 

1. Напишите, что выведет эта программа при вводе числа 938.

2. Укажите одно число для которого эта программа будет работать верно.

3. Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите все строки (одну или более), содержащие ошибки, и для каждой такой строки приведите правильный вариант. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


Пояснение

1. Программа выведет число 4.

2. Программа работает верно для любого числа, начинающегося с 1, в том числе для 1.

(Достаточно указать любое такое число).

3. В качестве ответа для остальных чисел программа выдаёт число на 1 большее, чем нужно. Возможные варианты исправления для языка Паскаль:

 

1) исправление условия продолжения цикла на while (N > 9) do

2) исправление инициализации на sum := 0;, а условие цикла на while (N >= 1) do или while (N > 0) do. При этом замена на while (N >= 0) do корректной не является

3) исправление условия продолжения цикла на while (N >= 1) do или while (N > 0) do и вывод значения sum − 1.



Указания по оцениванию.

 

Обратите внимание! В за­да­че требовалось вы­пол­нить три действия. Баллы за дан­ное задание на­чис­ля­ют­ся как сумма бал­лов за вер­ное выполнение каж­до­го действия.

1. Верно указано, что имен­но выведет про­грам­ма при ука­зан­ных в усло­вии входных данных.

2. Ука­за­но число, при ко­то­ром программа ра­бо­та­ет верно.

3. Ука­за­ны все стро­ки (одна или более), в ко­то­рые нужно вне­сти исправления, и эти ис­прав­ле­нию внесены; при этом по­лу­че­на верно ра­бо­та­ю­щая программа.

При вы­пол­не­нии действия 3 вер­ное указание на ошиб­ку при не­вер­ном её ис­прав­ле­нии не засчитывается.

Обратите внимание! Выбор оши­боч­ных строк может быть вы­пол­нен не един­ствен­ным способом.

В ра­бо­те (во фраг­мен­тах программ) до­пус­ка­ет­ся наличие от­дель­ных синтаксических ошибок, не ис­ка­жа­ю­щих замысла ав­то­ра решения.

 

Критерии оце­ни­ва­ния выполнения заданияБаллы
Правильно вы­пол­не­ны все три действия.3
Правильно вы­пол­не­ны два дей­ствия из трёх.2
Не вы­пол­не­ны условия, поз­во­ля­ю­щие поставить 2 или 3 балла, од­на­ко выполнено одна из сле­ду­ю­щих условий.

1. Вы­пол­не­но одно дей­ствие из трёх.

2. Пред­став­лен новый вер­ный текст программы, воз­мож­но совершенно не по­хо­жий на исходный.

1
Все пунк­ты задания вы­пол­не­ны неверно или отсутствуют.0
Максимальный балл3


Пример 1.

 

Оцените это решение в баллах:

Пример 2.

 

Оцените это решение в баллах:

Пример 3.

 

Оцените это решение в баллах:

Пример 4.

 

Оцените это решение в баллах:



Задание № 5436

Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования).

 

 

БейсикПаскаль

DIM N AS LONG

INPUT N

sum = 0

WHILE N >= 9

N = N \ 10

sum = sum + 1

WEND

PRINT sum

END

var N: longint;

sum: integer;

begin

readln(N);

sum := 0;

while N >= 9 do

begin

N := N div 10;

sum := sum + 1;

end;

writeln(sum);

end.

Си++Алгоритмический

#include <iostream>

using namespace std;

int main()

{

long int N;

int sum;

cin >> N;

sum = 0;

while (N >= 9)

{

N = N / 10;

sum = sum + 1;

}

cout « sum « endl;

}

алг

нач

цел N, sum

ввод N

sum := 0

нц пока N >= 9

N := div(N, 10)

sum := sum + 1

кц

вывод sum

кон

Python

n = int(input())

sum = 0

while N >= 9:

    N //= 10

    sum += 1

print(sum)

 

 

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе числа 584.

2. Укажите одно число для которого эта программа будет работать верно.

3. Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите все строки (одну или более), содержащие ошибки, и для каждой такой строки приведите правильный вариант.

Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


Пояснение

1. Программа выведет число 2.

2. Программа работает верно для всех чисел, начинающихся на 9. в том числе для числа 9. (Достаточно указать любое такое число).

3. В качестве ответа для остальных чисел программа выдаёт число на 1 меньшее, чем нужно. Возможные (не все) варианты исправления для языка Паскаль:

1) исправление условия продолжения цикла на while (N >= 1) do или while (N > 0) do. При этом замена на while (N >= 0) do корректной не является.

2) исправление инициализации на sum := 1, а условие продолжения цикла на while (N > 9) do или while (N >= 10) do.



Указания по оцениванию.

Обратите внимание! В задаче требовалось выполнить три действия. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия.

1. Верно указано, что именно выведет программа при указанных в условии входных данных.

2. Указано число, при котором программа работает верно.

3. Указаны все строки (одна или более), в которые нужно внести исправления, и эти исправления внесены: при этом получена верно работающая программа.

При выполнении действия 3 верное указание на ошибку при неверном её исправлении не засчитывается.

Обратите внимание! Выбор ошибочных строк может быть выполнен не единственным способом.

В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.

 

 

Критерии оценивания выполнения заданияБаллы
Правильно выполнены все три действия.3
Правильно выполнены два действия из трёх.2
Не выполнены условия, позволяющие поставить 2 или 3 балла, однако выполнено одно из следующих условий.

1. Выполнено одно действие из трёх.

2. Представлен новый верный текст программы, возможно, совершенно не похожий на исходный.

1
Все пункты задания выполнены неверно или отсутствуют.0
Максимальный балл3


Пример 1.

 

Оцените это решение в баллах:

Пример 2.

 

Оцените это решение в баллах:

Пример 3.

 

Оцените это решение в баллах:

Пример 4.

 

Оцените это решение в баллах:



Наверх
Вернуться на основную страницу «Школы экспертов»