Вариант задания 25 и критерии оценивания



 

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

Например, для исходного массива из шести элементов:

8

3

4

5

13

10

программа должна вывести следующий массив

10

3

10

5

13

10

 

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

Бейсик Python
CONST N AS INTEGER = 30 DIM A (1 TO N) AS LONG DIM I AS LONG, J AS LONG, K AS LONG   FOR I = 1 TO N INPUT A(I) NEXT I ...   END # допускается также # использовать две # целочисленные переменные j и k a = [] n = 30 for i in range(0, n): a.append(int(input())) ...

 

Алгоритмический язык Паскаль
алг нач цел N = 30 целтаб a[1:N] цел i, j, k нцдля i от 1 до N    ввод a[i] кц ...   кон const N = 30; var a: array [1..N] of longint; i, j, k: longint; begin for i := 1 to N do    readln(a[i]); ...   end.

C++

#include <iostream>

using namespace std;

const int N = 30;

int main() {

long a[N];

long i, j, k;

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

   cin >> a[i];

...

return 0;

}

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

 

 


 

 

Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла)
На языке Паскаль
k := -10000; for i := 1 to N do if (a[i] mod 2 = 0) and (a[i] > k) then k := a[i]; for i := 1 to N do begin if (a[i] mod 2 = 0) then a[i] := k; writeln(a[i]); end;
На Алгоритмическом языке
k := -10000 нцдля i от 1 до N если mod(a[i], 2) = 0 и a[i] > k то k := a[i] все кц нцдля i от 1 до N если mod(a[i], 2) = 0 то a[i] := k все вывод a[i], нс кц
На языке Бейсик
K = -10000 FOR I = 1 TO N IF A(I) MOD 2 = 0 AND A(I) > K THEN K = A(I) END IF NEXT I FOR I = 1 TO N IF A(I) MOD 2 = 0 THEN A(I) = K END IF PRINT A(I) NEXT I
На языке С++
k = -10000; for (i = 0; i < N; i++) if (a[i] % 2 == 0 && a[i] > k) k = a[i]; for (i = 0; i < N; i++) { if (a[i] % 2 == 0) a[i] = k; cout << a[i] << endl; }

 

На языке Python

k = -10000

for i in range(0, n):

if (a[i] % 2 == 0 and a[i] > k):

   k = a[i]

for i in range(0, n):

if (a[i] % 2 == 0):

   a[i] = k

print(a[i]) 

Указания по оцениванию Баллы
Общие указания. 1. В алгоритме, записанном на языке программирования, допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора программы. 2. Эффективность алгоритма не имеет значения и не оценивается. 3. Допускается запись алгоритма на языке программирования, отличном от языков, приведённых в условии. В этом случае должны использоваться переменные, аналогичные описанным в условии. Если язык программирования использует типизированные переменные, описания переменных должны быть аналогичны описаниям переменных на Алгоритмическом языке. Использование нетипизированных или необъявленных переменных возможно только в случае, если это допускается языком программирования; при этом количество переменных и их идентификаторы должны соответствовать условию задачи. 4. Допускается формат вывода массива, отличный от указанного, например в строчку
Предложен правильный алгоритм, который изменяет исходный массив и выводит в качестве результата изменённый массив 2
Не выполнены условия, позволяющие поставить 2 балла. При этом предложено в целом верное решение, содержащее не более одной ошибки из числа следующих: 1) в цикле происходит выход за границу массива; 2) не инициализируется или неверно инициализируется максимум; 3) неверно осуществляется проверка чётности; 4) проверяется чётность не элемента массива, а его индекса; 5) в сравнении с максимумом перепутаны знаки «меньше» и «больше»; 6) сравнение с максимумом производится для индекса элемента массива, а не для его значения; 7) неверно составлено логическое условие (например, используется or вместо and); 8) исходный массив не изменяется; 9) изменяются не все требуемые элементы (например, только первый или последний из них); 10) отсутствует вывод ответа, или ответ выводится не полностью (например, только один элемент массива ввиду пропущенного цикла вывода элементов или операторных скобок); 11) используется переменная, не объявленная в разделе описания переменных; 12) не указано или неверно указано условие завершения цикла; 13) индексная переменная в цикле не меняется (например, в цикле while) или меняется неверно 1
Ошибок, перечисленных в п. 1–13, две или больше, или алгоритм сформулирован неверно (в том числе при отсутствии в явном или неявном виде цикла поиска нужного элемента) 0
Максимальный балл 2

 



Дата добавления: 2020-04-08; просмотров: 163; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!