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




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

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

Задание 3789
Задание 12441


Задание № 3789

Дан целочисленный массив из 30 элементов. Элементы массива могут принимать значения от 150 до 200 – рост учащихся выпускного класса. В команду по автогонкам входят все учащиеся, чей рост не более 175 см. Гарантируется, что такие учащиеся в классе есть. Опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит рост самого высокого участника гоночной команды.

Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

 

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

N=30

DIM A(N) AS INTEGER

DIM I, J, MAX AS INTEGER

FOR I = 1 TO N

INPUT A(I)

NEXT I

...

END

const

N=30;

var

a: array [1..N] of integer;

i, j, max: integer;

begin

for i:=1 to N do readln(a[i]);

...

end.

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

#include <iostream>

using namespace std;

#define N 30

int main(void)

{

int a[N];

int i, j, max;

for (i=0; i<N; i++)

cin >> a[i];

...

}

алг

нач

цел N = 30

целтаб a[1:N]

цел i, j, max

нц для i от 1 до N

ввод a[i]

кц

...

кон

Русский (естественный) язык
Объявляем массив A из 30 элементов.

Объявляем целочисленные переменные I, J, MAX.

В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.

...

Python

# допускается также

# использовать две

# целочисленные переменные j, max

a = []

n = 30

for i in range(0, n):

a.append(int(input()))

...

 

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


Пояснение

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

MAX = 150

FOR I = 1 TO N

IF A(I) <= 175 AND A(I) > MAX THEN

MAX = A(I)

ENDIF

NEXT I

PRINT MAX

max:=150;

for i:=1 to N do

if (a[i]<=175) and (a[i]>max) then

max:=a[i];

writeln(max);

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

max=150;

for (i=0; i<N; i++)

if (a[i]<=175 && a[i]>max)

max=a[i];

cout << max;

max = 150

нц для i от 1 до N

если a[i]<=175 и a[i]> max

то max := a[i]

все

кц

вывод max

Русский (естественный) язык
Объявляем массив A из 30 элементов.

Записываем в переменную MAX начальное значение, равное 150. В цикле от первого элемента до тридцатого сравниваем элементы исходного массива со 175.

Если текущий элемент меньше или равен 175, то сравниваем значение текущего элемента массива со значением переменной MAX.

Если текущий элемент массива больше MAX, то записываем в MAX значение этого элемента массива. Переходим к следующему элементу.

После завершения цикла выводим значение переменной MAX.



Критерии оце­ни­ва­ния выполнения заданияБаллы
Предложен пра­виль­ный алгоритм, вы­да­ю­щий верное значение. До­пус­ка­ет­ся запись ал­го­рит­ма на дру­гом языке, ис­поль­зу­ю­щая аналогичные переменные. В случае, если язык про­грам­ми­ро­ва­ния использует ти­пи­зи­ро­ван­ные переменные, опи­са­ния переменных долж­ны быть ана­ло­гич­ны описаниям пе­ре­мен­ных на есте­ствен­ном языке. Ис­поль­зо­ва­ние нетипизированных или не­объ­яв­лен­ных переменных воз­мож­но только в случае, если это до­пус­ка­ет­ся языком программирования, при этом ко­ли­че­ство переменных и их иден­ти­фи­ка­то­ры должны со­от­вет­ство­вать условию задачи. В алгоритме, за­пи­сан­ном на языке программирования, до­пус­ка­ет­ся наличие от­дель­ных синтаксических ошибок, не ис­ка­жа­ю­щих замысла ав­то­ра программы.2
В любом ва­ри­ан­те решения может при­сут­ство­вать не более одной ошиб­ки из числа следующих.

1. Не ини­ци­а­ли­зи­ру­ет­ся или не­вер­но инициализируется пе­ре­мен­ная MAX (например, ей при­сва­и­ва­ет­ся значение a[1] или число боль­шее 150).

2. В срав­не­нии со 175 вме­сто знака «меньше или равно» ис­поль­зу­ет­ся знак «меньше».

3. От­сут­ству­ет вывод ответа.

4. Ис­поль­зу­ет­ся переменная, не объ­яв­лен­ная в раз­де­ле описания переменных.

5. Не ука­за­но или не­вер­но указано усло­вие завершения цикла.

6. Ин­декс­ная переменная в цикле не ме­ня­ет­ся (например, в цикле while).

7. Не­вер­но расставлены опе­ра­тор­ные скобки.

1
Ошибок, пе­ре­чис­лен­ных в п. 1–7, две или больше, или ал­го­ритм сформулирован неверно.0
Максимальный балл2


Пример 1.

 

max:=150;

for i:=1 to N do

if a[i]>175 than A[i] :=0;

for i:=1 to N do

if a(i)>max than max=A(i)

vriteln(max);

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

Пример 1.

 

Ищем в массиве нужные элементы и подсчитываем их. Выводим количество школьников с ростом от 150 до 170 см. Хотя бы один такой должен быть.

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

Пример 3.

 

MAX = 0

FOR I = 1 TO N

IF A(I) <= 175 THEN

IF A(I) >= MAX THEN

MAX = A(I)

ENDIF

ENDIF

NEXT I

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

Пример 4.

 

max=150;

for (i=0; i<150; i++)

if (a[i]<175 && a[i]>max)

max=a[i];

printf("% d", max);

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



Задание № 12441

Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от –10 000 до 10 000 включительно. Опишите

на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых хотя бы одно число делится на 13. В данной задаче под парой подразумевается два подряд идущих элемента массива. Например, для массива из пяти элементов: 6; 2; 13; –26; 14 — ответ: 3.

Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается

не использовать некоторые из описанных переменных.

 

 

 

БейсикPython

CONST N AS INTEGER = 20

DIM A (1 TO N) AS INTEGER

DIM I AS INTEGER,

       J AS INTEGER,

       K AS INTEGER

 

FOR I = 1 TO N

INPUT A(I)

NEXT I

...

END

# допускается также

# использовать две

# целочисленные переменные j и k

a = []

n = 20

for i in range(0, n):

    a.append(int(input()))

...

ПаскальАлгоритмический язык

const

    N = 20;

var

    a: array [1..N] of integer;

    i, j, k: integer;

begin

    for i := 1 to N do

        readln(a[i]);

    ...

end.

алг

нач

    цел N = 20

    целтаб a[1:N]

    цел i, j, k

    нц для i от 1 до N

        ввод a[i]

    кц

    ...

кон

СиЕстественный язык

#include

#define N 20

int main() {

    int a[N];

    int i, j, k;

    for (i = 0; i < N; i++)

        cin >> a[i];

    ...

    return 0;

}

Объявляем массив A из 20 элементов.

Объявляем целочисленные переменные I, J, K.

В цикле от 1 до 20 вводим элементы массива A с 1-го по 20-й.

 

 

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


Пояснение

Паскаль

k := 0;

for i := 1 to N-1 do

    if (a[i] mod 13=0) or (a[i+1] mod 13=0) then

        inc(k);

writeln(k);

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

k := 0;

нц для i от 1 до N-1

    если mod(a[i],13)=0 или mod(a[i+1],13)=0

    то

        k := k+1

    все

кц

вывод k

Бейсик

K = 0

FOR I = 1 TO N-1

    IF (A(I) MOD 13 = 0) OR (A(I + 1) MOD 13 = 0) THEN

        K = K+1

    END IF

NEXT I

PRINT K

Python

k = 0

for i in range(0, n – 1):

    if (a[i] % 13 == 0 or a[i + 1] % 13 == 0):

        k +=1

print(k)

Си

k = 0;

for (i = 0; i < N-1; i++)

    if (a[i]%13 == 0 || a[i+1]%13 == 0)

        k++;

cout « k « endl;

Естественный язык
Записываем в переменную K начальное значение, равное 0. В цикле от первого элемента до предпоследнего находим остаток от деления текущего и следующего элемента массива на 13. Если первый или второй из полученных остатков равен 0, увеличиваем переменную K на единицу. После завершения цикла выводим значение переменной K


Критерии оце­ни­ва­ния вы­пол­не­ния заданияБаллы
Предложен пра­виль­ный алгоритм, вы­да­ю­щий вер­ное значение. До­пус­ка­ет­ся за­пись ал­го­рит­ма на дру­гом языке, ис­поль­зу­ю­щая ана­ло­гич­ные переменные. В случае, если язык про­грам­ми­ро­ва­ния ис­поль­зу­ет ти­пи­зи­ро­ван­ные переменные, опи­са­ния пе­ре­мен­ных долж­ны быть ана­ло­гич­ны опи­са­ни­ям пе­ре­мен­ных на есте­ствен­ном языке. Ис­поль­зо­ва­ние не­ти­пи­зи­ро­ван­ных или не­объ­яв­лен­ных пе­ре­мен­ных воз­мож­но толь­ко в случае, если это до­пус­ка­ет­ся язы­ком программирования, при этом ко­ли­че­ство пе­ре­мен­ных и их иден­ти­фи­ка­то­ры долж­ны со­от­вет­ство­вать усло­вию задачи. В алгоритме, за­пи­сан­ном на языке программирования, до­пус­ка­ет­ся на­ли­чие от­дель­ных син­так­си­че­ских ошибок, не ис­ка­жа­ю­щих за­мыс­ла ав­то­ра программы.2
Не вы­пол­не­ны условия, поз­во­ля­ю­щие по­ста­вить 2 балла. При этом пред­ло­же­но в целом вер­ное решение, со­дер­жа­щее не более одной ошиб­ки из числа следующих:

1) в цикле про­ис­хо­дит выход за гра­ни­цу мас­си­ва (например, ис­поль­зу­ет­ся цикл от 1 до N);

2) не ини­ци­а­ли­зи­ру­ет­ся или не­вер­но ини­ци­а­ли­зи­ру­ет­ся счётчик ко­ли­че­ства най­ден­ных пар;

3) не­вер­но осу­ществ­ля­ет­ся про­вер­ка суммы пары эле­мен­тов на чётность (в том числе ис­поль­зу­ет­ся вы­ра­же­ние вида a[i]+a[i+1] mod 2<>0 без скобок);

4) на чётность про­ве­ря­ет­ся не сумма зна­че­ний элементов, а сумма их индексов;

5) не­вер­но осу­ществ­ля­ет­ся про­вер­ка суммы пары эле­мен­тов на положительность;

6) в слож­ном ло­ги­че­ском усло­вии про­стые про­вер­ки верны, но усло­вие в целом по­стро­е­но не­вер­но (например, пе­ре­пу­та­ны опе­ра­ции «И» и «ИЛИ», не­вер­но рас­став­ле­ны скоб­ки в ло­ги­че­ском выражении);

7) от­сут­ству­ет вывод ответа;

8) ис­поль­зу­ет­ся переменная, не объ­яв­лен­ная в раз­де­ле опи­са­ния переменных;

9) не ука­за­но или не­вер­но ука­за­но усло­вие за­вер­ше­ния цикла;

10) ин­декс­ная пе­ре­мен­ная в цикле не ме­ня­ет­ся (например, в цикле while) или ме­ня­ет­ся неверно;

11) не­вер­но рас­став­ле­ны опе­ра­тор­ные скобки.

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

1
Не вы­пол­не­ны условия, поз­во­ля­ю­щие по­ста­вить 1 или 2 балла. Например, ошибок, пе­ре­чис­лен­ных в п. 1–11, две или больше, или ал­го­ритм сфор­му­ли­ро­ван неверно.0
Максимальный балл2


Пример 1.

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

Пример 2.

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



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