Работа с массивами и матрицами в языке программирования
  главная : карта раздела : автора  
 


Интерактивный тренажер 19 ЕГЭ ДЕМО 2017
"Работа с массивами и матрицами в языке программирования"

 


Нашли ошибку, возникли вопросы или появились замечания, пишите...


Разбор решения задания 19 демоверсии ЕГЭ 2016
Работа с массивами и матрицами в языке программирования.

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 4,7,3,8,5,0,1,2,9,6 соответственно, т.е. A[0] = 4; A[1] = 7 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы, записанного ниже.

c := 0;
for i := 1 to 9 do
if A[i] < A[0] then begin
c := c + 1;
t := A[i];
A[i] := A[0];
A[0] := t
end;

РЕШЕНИЕ

рисуем все элементы массива в столбик или в строчку, кому как удобнее, проставляя соответствующие начальные значения, обозначая через N номер ячейки, а через Z – соответствующее значение

N            0             1             2             3             4             5             6             7             8             9
Z             4             7             3             8             5             0             1             2             9             6

далее в цикле от i = 1 до i = 9 - сравниваются значения текущей ячейки массива с нулевой, и если значение текущей ячейки меньше значения нулевой, то увеличиваем счетчик перестановок с:=с+1 на единицу и выполняя три следующие команды t := A[i]; A[i] := A[0]; A[i] := t меняем местами значения указанных ячеек

i = 1 : A[1] = 7 :  A[0] = 4 - условие не выполнилось

i = 2 : A[2] = 3 :  A[0] = 4 условие выполнилось, увеличиваем счетчик с = с+1 = 1 и в A[2] запоминаем значение  A[0], а в A[0] запоминаем значение  A[2], которое было записано в переменной t после чего массив стал таким:

N            0             1             2             3             4             5             6             7             8             9
Z                        7                         8             5             0             1             2             9             6

i = 3 : A[3] = 8 :  A[0] = 3 - условие не выполнилось

i = 4 : A[4] = 5 :  A[0] = 3 - условие не выполнилось

i = 5 : A[5] = 0 :  A[0] = 3 условие выполнилось, увеличиваем счетчик с = с+1 = 2 и в A[5] запоминаем значение  A[0], а в A[0] запоминаем значение  A[5], которое было записано в переменной t после чего массив стал таким:

N            0             1             2             3             4             5             6             7             8             9
Z                        7             4             8             5                        1             2             9             6

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

Цикл закончен, нам остается подсчитать количество случаев, когда значение текущей ячейки было больше, чем предыдущей. В нашем случае это случилось ровно 2 раза.

Тренажер по решению задач 19 ЕГЭ 2015 на работу с массивами и матрицами в языке программирования

Примеры задач, генерируемых интерактивным тренажером 19 ЕГЭ ДЕМО 2015 на
"Работа с массивами и матрицами в языке программирования"
с решением и проверкой методом прокрутки

Задание №1

В программе используется одномерный целочисленный массив A с индексами от 1 до 25. Ниже представлен фрагмент программы, в котором задаются значения элементов:

n:= 25;
A[1]:= 2;
for i:= 2 to n do begin
A[i]:= 2*A[i–1] mod 10;
end;

Чему будет равно значение A[25] после выполнения фрагмента программы?

РЕШЕНИЕ

команда внутри цикла: 2*A[i–1] MOD 10 - берет остаток от деления, т.е. массив заполняется значениями: 2,4,8,6,2,4,8,6,2,4,8,6,2,4,8,6,2,4,8,6,2,4,8,6,2 - которые повторяются через 4 элемента

таких полных групп в массиве с 25 элементами будет 25 div 4 = 6.  Эти 6 групп займут первые 24 элемента, а 25-м будет первый элемент в четвёрке, то есть 2

Правильный ответ: 2

 

Задание №2

В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:s:=26;
n:=21;
for i:=0 to n-9 do begin
s:=s+A[i]-A[i+1]
end;

В начале выполнения этого фрагмента в массиве находились однозначные натуральные числа. Какое наибольшее значение может иметь переменная s после выполнения данной программы?

РЕШЕНИЕ

вспомним, что для двухзначных натуральных чисел наибольшим значением будет число 9, а наименьшим - 1

из программы видно, что переменная s будет изменяться в цикле следующим образом

 
s = s + A[0] - a[1]
s = s + a[1] - a[2]
s = s + a[2] - a[3]
s = s + a[3] - a[4]
s = s + a[4] - a[5]
s = s + a[5] - a[6]
s = s + a[6] - a[7]
s = s + a[7] - a[8]
s = s + a[8] - a[9]
s = s + a[9] - a[10]
s = s + a[10] - a[11]
s = s + a[11] - a[12]
s = s + a[12] - A[13]

внимательно посмотрев на запись можно заметить, что те элементы, наименования которых я специально записал с маленькой буквы можно сократить, а для оставшихся элементов можно записать формулу: s = (max - min) * 1 = (9 - 1) * 1 = 8 и, что самое интересное, данная формула не зависит от количества элементов в массиве, но однозначно определяется значением - 1, которое вы легко найдете, посмотрев внимательно на программу

не забудем к полученному значению добавить начальное значение s = 26

итого 26 + 8 = 34

Правильный ответ: 34

Задание №3

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 9,3,2,4,7,5,6,1,8,0 соответственно, т.е. A[0] = 9; A[1] = 3 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы, записанного ниже.

c := 0;
for i := 2 to 9 do
if A[i-1] < A[i] then begin
c := c + 1;
t := A[i];
A[i] := A[i-1];
A[i-1] := t
end;

РЕШЕНИЕ

рисуем все элементы массива в столбик или в строчку, кому как удобнее, проставляя соответствующие начальные значения A[0] - 9
A[1] - 2
A[2] - 3
A[3] - 0
A[4] - 4
A[5] - 7
A[6] - 5
A[7] - 6
A[8] - 1
A[9] - 8

далее в цикле от i = 2 до i = 9 - сравниваются значения текущей ячейки массива с предыдущей, и если значение текущей ячейки больше значения предыдущей, то увеличиваем счетчик перестановок с:=с+1 на единицу и выполняя три следующие команды t := A[i]; A[i] := A[i-1]; A[i-1] := t меняем местами значения указанных ячеек

i = 2 : A[2 - 1] = 2 :  A[2] = 3 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 1

после чего в ячейку  A[2 - 1] вписываем 3, а в ячейку A[2] вносим значение 2

i = 3 : A[3 - 1] = 2 :  A[3] = 0 ;

 - значение предыдущей ячейки оказалось НЕ меньше чем текущей, поэтому ничего не делаем

i = 4 : A[4 - 1] = 0 :  A[4] = 4 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 2

после чего в ячейку  A[4 - 1] вписываем 4, а в ячейку A[4] вносим значение 0

i = 5 : A[5 - 1] = 0 :  A[5] = 7 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 3

после чего в ячейку  A[5 - 1] вписываем 7, а в ячейку A[5] вносим значение 0

i = 6 : A[6 - 1] = 0 :  A[6] = 5 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 4

после чего в ячейку  A[6 - 1] вписываем 5, а в ячейку A[6] вносим значение 0

i = 7 : A[7 - 1] = 0 :  A[7] = 6 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 5

после чего в ячейку  A[7 - 1] вписываем 6, а в ячейку A[7] вносим значение 0

i = 8 : A[8 - 1] = 0 :  A[8] = 1 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 6

после чего в ячейку  A[8 - 1] вписываем 1, а в ячейку A[8] вносим значение 0

i = 9 : A[9 - 1] = 0 :  A[9] = 8 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 7

после чего в ячейку  A[9 - 1] вписываем 8, а в ячейку A[9] вносим значение 0

цикл закончен, нам остается подсчитать количество случаев, когда значение текущей ячейки было больше чем предыдущей. В нашем случае это случилось ровно 7 раз(а).

Правильный ответ: 7

 

Задание №4

В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

s:=14;
n:=23;
for i:=0 to n-10 do begin
s:=s+A[i]-A[i+4]
end;

В начале выполнения этого фрагмента в массиве находились двухзначные натуральные числа. Какое наибольшее значение может иметь переменная s после выполнения данной программы?

РЕШЕНИЕ

вспомним, что для двухзначных натуральных чисел наибольшим значением будет число 99, а наименьшим - 10

из программы видно, что переменная s будет изменяться в цикле следующим образом

 
s = s + A[0] - a[4]
s = s + A[1] - a[5]
s = s + A[2] - a[6]
s = s + A[3] - a[7]
s = s + a[4] - a[8]
s = s + a[5] - a[9]
s = s + a[6] - a[10]
s = s + a[7] - a[11]
s = s + a[8] - a[12]
s = s + a[9] - a[13]
s = s + a[10] - A[14]
s = s + a[11] - A[15]
s = s + a[12] - A[16]
s = s + a[13] - A[17]

внимательно посмотрев на запись можно заметить, что те элементы, наименования которых я специально записал с маленькой буквы можно сократить, а для оставшихся элементов можно записать формулу: s = (max - min) * 4 = (99 - 10) * 4 = 356 и, что самое интересное, данная формула не зависит от количества элементов в массиве, но однозначно определяется значением - 4, которое вы легко найдете, посмотрев внимательно на программу

не забудем к полученному значению добавить начальное значение s = 14

итого 14 + 356 = 370

Правильный ответ: 370

Задание №5

В программе используется одномерный целочисленный массив A с индексами от 1 до 20. Ниже представлен фрагмент программы, в котором задаются значения элементов:

n:= 20;
A[1]:= 2;
for i:= 2 to n do begin
A[i]:= 2*A[i–1];
end;

Чему будет равно значение A[20] после выполнения фрагмента программы?

РЕШЕНИЕ

команда A[1] = 2 присваивает первому элементу массива значение равное 2

команда внутри цикла А[i]:= 2*A[i–1]  присваивает очередному элементу значение в два раза большее предыдущего

всего прокруток будет n = 20 и, с каждой прокруткой, очередной элемент массива будет удваиваться

приходим к выводу, что цикл заполняет массив значениями степени двойки, следовательно, последний элемент будет равен 2^20 = 1048576

но, на всякий случай проверим свои рассуждения прокруткой:

i = 2 A[2] = 4
i = 3 A[3] = 8
i = 4 A[4] = 16
i = 5 A[5] = 32
i = 6 A[6] = 64
i = 7 A[7] = 128
i = 8 A[8] = 256
i = 9 A[9] = 512
i = 10 A[10] = 1024
i = 11 A[11] = 2048
i = 12 A[12] = 4096
i = 13 A[13] = 8192
i = 14 A[14] = 16384
i = 15 A[15] = 32768
i = 16 A[16] = 65536
i = 17 A[17] = 131072
i = 18 A[18] = 262144
i = 19 A[19] = 524288
i = 20 A[20] = 1048576

Правильный ответ: 1048576

Задание №6

В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 2,4,9,6,7,5,1,8,3,0 соответственно, т.е. A[0] = 2; A[1] = 4 и т.д. Определите значение переменной c после выполнения следующего фрагмента программы, записанного ниже.

c := 0;
for i := 3 to 6 do
if A[i-1] < A[i] then begin
c := c + 1;
t := A[i];
A[i] := A[i-1];
A[i-1] := t
end;

РЕШЕНИЕ

рисуем все элементы массива в столбик или в строчку, кому как удобнее, проставляя соответствующие начальные значения

A[0] - 2 : A[1] - 4 : A[2] - 9 : A[3] - 1 : A[4] - 6 : A[5] - 7 : A[6] - 5 : A[7] - 8 : А[8] - 3 : A[9] - 0

далее в цикле от i = 3 до i = 6 - сравниваются значения текущей ячейки массива с предыдущей, и если значение текущей ячейки больше значения предыдущей, то увеличиваем счетчик перестановок с:=с+1 на единицу и выполняя три следующие команды t := A[i]; A[i] := A[i-1]; A[i-1] := t меняем местами значения указанных ячеек

i = 3 : A[3 - 1] = 9 :  A[3] = 1 ;

 - значение предыдущей ячейки оказалось НЕ меньше чем текущей, поэтому ничего не делаем

i = 4 : A[4 - 1] = 1 :  A[4] = 6 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 1

после чего в ячейку  A[4 - 1] вписываем 6, а в ячейку A[4] вносим значение 1

i = 5 : A[5 - 1] = 1 :  A[5] = 7 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 2

после чего в ячейку  A[5 - 1] вписываем 7, а в ячейку A[5] вносим значение 1

i = 6 : A[6 - 1] = 1 :  A[6] = 5 - значение предыдущей ячейки оказалось меньше чем текущей, поэтому увеличиваем значение счетчика с = 3

после чего в ячейку  A[6 - 1] вписываем 5, а в ячейку A[6] вносим значение 1

цикл закончен, нам остается подсчитать количество случаев, когда значение текущей ячейки было больше чем предыдущей. В нашем случае это случилось ровно 3 раз(а).

Правильный ответ: 3

 

 
© Северобайкальск, Russia
Александр Козлов, 2017

  Рейтинг@Mail.ru