Материал: 17. Введение 18. Линейные программы 19. Ветвления 20. Программирование циклических алгоритмов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
«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


12


7


38


5


40


23


12


38


7


5


40


23


12


38


5


7


40


23


12


38


5


40


7


23


12


38


5


40


23


7

? выход за границы массива 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] Что плохо? ?

0


1


2


3


7


12


40


23


23


12


40


7


23


40


12


7


23


12


40


7


7


12


40


23

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] мы уже посмотрели


Как найти минимальный?


?

Поиск максимального элемента (Python)

M = A[0]for x in A: if x > M: M = xprint( M ) перебрать все элементы в массиве Afor 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]

Задачи (без min и max)

«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

Источники иллюстраций

иллюстрации художников издательства «Бином» авторские материалы
Источник: https://files.student-it.ru/previewfile/258784