Обработка массивов.
Одномерные массивы
МАОУ СШ № 8 г. Бор Нижегородской обл.
Кустова Юлия Евгеньевна
№
Проверяемые элементы содержания
19
Работа с массивами (заполнение, считывание, поиск, сортировка, массовые операции и др.)
Коды проверяемых элементов содержания (по кодификатору)
Коды проверяемых требований к уровню подготовки (по кодификатору)
1.5.2/
Уровень сложности задания
1.5.6
1.1.4
П
Макс. балл за выполнение задания
Примерное время выполнения задания (мин.)
1
5
Категория I.
Обмен местами элементов массива
Пример 1
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 5; 1; 6; 7; 8; 8; 7; 7; 6; 9 соответственно.
Определите значение переменной c после выполнения следующего фрагмента программы, записанного ниже на разных языках программирования.
=A(1), т.е. А(0)=А(1), то t=A(1) A(1)=A(0) A(0)=t=A(1) иначе с увеличивается на 1 Вывод: если предыдущий член больше или равен последующего, меняем их местами, иначе увеличиваем переменную С на 1. " width="640"
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
5 1 6 7 8 8 7 7 6 9
Описательная часть
Естественный язык
Количество раз работы цикла, определяется счетчиком (1-9=9)
Что ищем? Определяем при выходе значение переменной С (перед входом С=0)
Определяем суть по первой итерации
1 итерация
Если А(1-1)=A(1), т.е. А(0)=А(1), то
t=A(1)
A(1)=A(0)
A(0)=t=A(1)
иначе
с увеличивается на 1
Вывод: если предыдущий член больше или равен последующего, меняем их местами, иначе увеличиваем переменную С на 1.
= 1 6 7 8 8 7 7 6 9 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 1 5 = 6 7 8 8 7 7 6 9 NO А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 NO 1 5 6 = 7 8 8 7 7 6 9 NO А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 1 5 6 7 = 8 8 7 7 6 9 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 1 5 6 7 8 = 8 7 7 6 9 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 1 5 6 7 8 8 = 7 7 6 9 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 1 5 6 7 8 7 8 = 7 6 9 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 1 5 6 7 8 7 7 8 = 6 9 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 NO 1 5 6 7 8 7 7 6 8 9 Ответ: 4 " width="640"
Решение:
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
5 = 1 6 7 8 8 7 7 6 9
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
1 5 = 6 7 8 8 7 7 6 9
NO
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
NO
1 5 6 = 7 8 8 7 7 6 9
NO
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
1 5 6 7 = 8 8 7 7 6 9
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
1 5 6 7 8 = 8 7 7 6 9
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
1 5 6 7 8 8 = 7 7 6 9
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
1 5 6 7 8 7 8 = 7 6 9
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
1 5 6 7 8 7 7 8 = 6 9
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
NO
1 5 6 7 8 7 7 6 8 9
Ответ: 4
Пример 2
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 8, 4, 3, 0, 7, 2, 1, 5, 9, 6 соответственно.
Определите значение переменной s после выполнения следующего фрагмента этой программы (записанного ниже на разных языках программирования).
A(1), то s=s+1 t=A(0), t=8 A(0)=A(1) A(1)=t=A(0) Вывод: если предыдущий член больше последующего, меняем их местами и увеличиваем переменную s на 1. " width="640"
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
8 4 3 0 7 2 1 5 9 6
Описательная часть
Естественный язык
Количество раз работы цикла, определяется счетчиком (0-8=9)
Что ищем? Определяем при выходе значение переменной s (известно, перед входом s=0)
Определяем суть по первой итерации
1 итерация
Если А(0)A(1), то
s=s+1
t=A(0), t=8
A(0)=A(1)
A(1)=t=A(0)
Вывод: если предыдущий член больше последующего, меняем их местами и увеличиваем переменную s на 1.
4 3 0 7 2 1 5 9 6 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 4 8 3 0 7 2 1 5 9 6 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 4 3 8 0 7 2 1 5 9 6 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 4 3 0 8 7 2 1 5 9 6 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 4 3 0 7 8 2 1 5 9 6 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 4 3 0 7 2 8 1 5 9 6 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 4 3 0 7 2 1 8 5 9 6 А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 4 3 0 7 2 1 5 8 9 6 NO А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 4 3 0 7 2 1 5 8 9 6 Ответ: 8 " width="640"
Решение:
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
8 4 3 0 7 2 1 5 9 6
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
4 8 3 0 7 2 1 5 9 6
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
4 3 8 0 7 2 1 5 9 6
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
4 3 0 8 7 2 1 5 9 6
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
4 3 0 7 8 2 1 5 9 6
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
4 3 0 7 2 8 1 5 9 6
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
4 3 0 7 2 1 8 5 9 6
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
4 3 0 7 2 1 5 8 9 6
NO
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
4 3 0 7 2 1 5 8 9 6
Ответ: 8
Пример 3
В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Значения элементов равны 1, 2, 5, 8, 9, 3, 4, 0, 7, 6 соответственно.
Определите значение переменной j после выполнения следующего фрагмента программы (записанного ниже на пяти языках программирования).
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
1 2 5 8 9 3 4 0 7 6
Описательная часть
Естественный язык
Количество раз работы цикла, определяется условием Пока
Что ищем? Определяем при выходе значение переменной j (известно, перед входом j=5)
Определяем суть по первой итерации
Пока А(5)
t=A(5), t=3
A(5)=A(5-1)=A(4)=9
A(4)=t=3
j=j-1=5-1=4
Вывод: пока (начиная с 5-го элемента массива) текущий элемент меньше предыдущего, меняем их местами и изменяем переменную j на -1.
3 4 0 7 6 j=5-1=4 j=4-1=3 А 0 А 1 А 2 А 3 А 4 А 5 1 2 5 8 3 9 А 0 А 1 А 2 А 3 А 4 А 5 1 2 5 3 8 9 j=3-1=2 А 0 А 1 А 2 А 3 А 4 А 5 1 2 3 5 8 9 NO цикл остановился Ответ: 2 " width="640"
Решение:
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9
1 2 5 8 9 3 4 0 7 6
j=5-1=4
j=4-1=3
А 0 А 1 А 2 А 3 А 4 А 5
1 2 5 8 3 9
А 0 А 1 А 2 А 3 А 4 А 5
1 2 5 3 8 9
j=3-1=2
А 0 А 1 А 2 А 3 А 4 А 5
1 2 3 5 8 9
NO цикл остановился
Ответ: 2
Пример 4
В программе используется одномерный целочисленный массив A с индексами от 0 до 10. Значения элементов равны 4, 3, 16, 24, 35, 18, 4, 72, 10, 99, 44 соответственно.
Определите значение переменной c после выполнения следующего фрагмента программы, записанного ниже на пяти языках программирования.
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 3 16 24 35 18 4 72 10 99 44
Описательная часть
Естественный язык
Количество раз работы цикла, определяется счетчиком (1-9=9)
Что ищем? Определяем при выходе значение переменной с (известно, перед входом с=0)
Определяем суть по первой итерации
Если А(1) mod 10=A(0) т.е. 4 ТО
с=с+1,
t=A(1+1)=A(2)=16
A(1)=t=16
Вывод: пока (начиная с 5-го элемента массива) текущий элемент меньше предыдущего, меняем их местами и изменяем переменную j на -1.
Решение:
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 24 35 18 4 72 10 99 44
NO
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 24 35 18 4 72 10 99 44
NO
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 24 35 18 4 72 10 99 44
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 35 24 18 4 72 10 99 44
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 35 18 24 4 72 10 99 44
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 35 18 4 24 72 10 99 44
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 35 18 4 72 24 10 99 44
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 35 18 4 72 10 24 99 44
А 0 А 1 А 2 А 3 А 4 А 5 А 6 А 7 А 8 А 9 А 10
4 = 3 16 35 18 4 72 10 99 24 44
Ответ: 7
Категория II.
Обсчёт массива с накопителем
Пример I:
В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:
s:=0;
n:=10;
for i:=0 to n-2 do begin
s:=s+A[i]-A[i+2]
end;
В начале выполнения этого фрагмента в массиве находились трёхзначные натуральные числа. Какое наибольшее значение может иметь переменная s после выполнения данной программы?
Решение:
1. чтобы понять, что же делает эта программа; возьмем массив из пяти элементов ( n = 4 ):
A[0]
0
A[1]
A[2]
1
2
A[3]
A[4]
3
4
2. переменная s будет изменяться следующим образом:
s:=0;
n:=10;
for i:=0 to n-2 do
begin
s:=s+A[i]-A[i+2]
end;
s := 0
s := s + A[0] – A[2]
s := s + A[1] – A[3]
s := s + A[2] – A[4]
3. в итоге после всех действий
= A[0] + A[1] – A[3] – A[4]
s:= A[0]– A[2] +A[1]–A[3]+ A[2] –A[4]
4. это значит, что значение s всегда будет равно сумме двух первых элементов массива минус сумма двух последних элементов
5. все числа – трёхзначные , то есть принадлежат отрезку [ 100;999 ]
6. максимальное значение s равно 999 + 999 – 100 – 100 = 1798
7. обратите внимание, что это число не зависит от размера массива
Ответ: 1798
Пример 2:
Ниже представлен записанный на разных языках программирования фрагмент одной и той же программы. В программе описан одномерный целочисленный массив A, в представленном фрагменте программы обрабатываются элементы массива с индексами от 1 до 10.
В начале выполнения этого фрагмента в массиве находились числа 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, то есть A[1] = 1, A[2] = 2 и так далее Чему будет равно значение переменной s после выполнения данной программы?
Решение:
1. чтобы понять, что же делает эта программа; возьмем массив из пяти элементов ( n = 4 ):
A[0]
0
A[1]
A[2]
1
A[3]
2
A[4]
3
4
2. переменная s будет изменяться следующим образом:
s:=0;
n:=10;
for i:= 2 to n do begin
s:=s+A[i]*A[i]-A[i-1]*A[i-1];
end;
s := 0
s := s + A2*А2 – A1*А1
s := s + A3*А3 – A2*А2
s := s + A4*А4 – A3*А3
3. в итоге после всех действий
s:= A2*A2 -A1*A1+ A3*A3-A2*A2 +A4*A4 -A3*A3 =
= A1 *A1+ A10*A10
4. это значит, что значение s всегда будет равно разности квадратов последнего и первого элементов массива
5. Числа в массиве находились числа 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
6. Значение переменной s равно 10*10-1*1= 100-1 = 99
7. обратите внимание, что это число не зависит от размера массива
Ответ: 99
Домашнее задание
ЕГЭ Гущин, отработать задание 19, раздел Обмен местами элементов массива, обсчет массива с накопителем, преобразование пройденных элементов массива.
При разработке презентации были использованы свободно распространяемые в некоммерческих целях материалы сети интернет.
http:// kpolyakov.spb.ru/school/ege.htm
https://inf-ege.sdamgia.ru/