«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [10; 100] и считает число пар соседних элементов, сумма которых делится на 3. Как поменять местами значения двух переменных
a и
b? ?
с = aa = bb = c вспомогательная переменная элементы массива:
с = A[i]A[i] = A[k]A[k] = c Задача. Массив A содержит чётное количество элементов N. Нужно поменять местами пары соседних элементов: 0-й с 1-м, 2-й — с 3-м и т. д.
0 | 1 | 2 | 3 | | N-2 | N-1 |
7 | 12 | 38 | 5 | … | 40 | 23 |
0 | 1 | 2 | 3 | | N-2 | N-1 |
12 | 7 | 5 | 38 | … | 23 | 40 |
for i in range(N): поменять местами A[i] и A[i+1] Что плохо? ?
0 | 1 | 2 | 3 | 4 | 5 |
7 | 12 | 38 | 5 | 40 | 23 |
? выход за границы массива
for i in range(0,N-1,2): # переставляем A[i] и A[i+1] с = A[i] A[i] = A[i+1] A[i+1] = cA[0]A[1] A[2]A[3]... A[N-2]A[N-1] range(0,N-1,2):
0 | 1 | 2 | | N-3 | N-2 | N-1 |
7 | 12 | 5 | … | 38 | 40 | 23 |
0 | 1 | 2 | | N-3 | N-2 | N-1 |
23 | 40 | 38 | … | 5 | 12 | 7 |
Задача. Переставить элементы массива в обратном порядке (выполнить
реверс).
A[0]A[N-1]A[1]A[N-2]A[i]A[N-1-i]A[N-1]A[0] 0+N-1 = N-11+N-2 = N-1i+??? = N-1N-1+0 = N-1 for i in range(N): поменять местами A[i] и A[N-1-i] Что плохо? ?
i=0i=1i=2i=3 Как исправить? ?
(N // 2):«A»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100], поменять местами пары соседних элементов, не трогая первый и последний элементы.
Массив: 53 66 88 39 26 88 35 24 38 50 Результат: 53 88 66 26 39 35 88 38 24 50 «B»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100] и выполнить циклический сдвиг влево: каждый элемент перемещается на место предыдущего, а первый – на место последнего.
Массив: 53 66 88 39 26 88 35 24 38 50 Результат: 66 88 39 26 88 35 24 38 50 53 «C»: Заполнить массив из 10 элементов случайными числами в диапазоне [0; 100], сделать реверс отдельно в первой и во второй половине массива.
Массив: 53 66 88 39 26 88 35 24 38 50 Результат: 26 39 88 66 53 50 38 24 35 88 Какие переменные нужны? ?
for i in range(N): if A[i] > M: M = A[i]print( M ) Чего не хватает? ?
Какое начальное значение взять для M?
?
M – значение, которое заведомо меньше всех элементов массива или
M = A[0] (или любой другой элемент)
максимальный не меньше, чем A[0]
M = A[0]
for i in range(1,N):
if A[i] > M:
M = A[i]
print( M )
начинаем с A[1], так как A[0] мы уже посмотрели
Как найти минимальный?
?
M = A[0]for x in A: if x > M: M = xprint( M ) перебрать все элементы в массиве A
for x in A: Не нужно знать размер! !
print( max(A) )print( min(A) ) Задача. Найти в массиве максимальный элемент и его номер. Какие переменные нужны? ?
M = A[0]; nMax = 0for i in range(1,N): if A[i] > M: M = A[i] nMax = i print( "A[", nMax, "]=", M )nMax = 0nMax = i Можно ли убрать одну переменную? ?
M = A[0]; nMax = 0for i in range(1,N): if A[i]> M : M = A[i] nMax = iprint( "A[", nMax, "]=", M ) Если знаем
nMax, то
M=A[nMax]! !
: A[nMax])A[nMax]«A»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [50; 150] и находит в нём минимальный и максимальный элементы и их номера.
«B»: Напишите программу, которая заполняет массив из 10 элементов в виде
A = [ 10, 2, 3, 4, 10, 6, 7, 8, 9, 10]
и и выводит количество элементов, имеющих максимальное значение.
«C»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [100; 200] и находит в нём пару соседних элементов, сумма которых минимальна.
«D»: Напишите программу, которая заполняет массив из 20 элементов случайными числами на отрезке [–100; 100] и находит в каждой половине массива пару соседних элементов, сумма которых максимальна.
ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ № 163, г. Санкт-Петербург kpolyakov@mail.ru
ЕРЕМИН Евгений Александрович к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь eremin@pspu.ac.ru
иллюстрации художников издательства «Бином» авторские материалы