На этом занятии Вам предстоит ознакомиться с программами, реализующими более сложные алгоритмы обработки одномерных массивов. Форма работы – очередная электронная лекция.
В настоящей разработке приводится текст этой лекции.
SCREEN 9: COLOR 14, 1: CLS
RANDOMIZE TIMER
'*Рассмотрим более сложные задачи на обработку одномерных массивов
'*Задача 1. Из элементов двух массивов составить один массив'**Т.н. задача - сложение массивов**
'INPUT "Сколько элементов в массивах"; n, m
'DIM x(n), y(m), z(n + m)
'a = -9: b = 10
'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND)
'PRINT x(i);
'NEXT i: PRINT
'FOR i = 1 TO m: y(i) = INT(a + (b - a) * RND)
'PRINT y(i);
'NEXT: PRINT
'FOR i = 1 TO n: z(i) = x(i): NEXT
'k = 1
'FOR i = n + k TO n + m: z(n + k) = y(k): k = k + 1: NEXT
'FOR i = 1 TO n + m: PRINT z(i); : NEXT i
'******Задача 2. Сжатие массива ************************
'*Удалить из массива все элементы, равные нулю*
'INPUT "Сколько элементов в массиве"; n
'DIM x(n), y(n)
'a = -4: b = 5
'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i
'k = 0
'FOR i = 1 TO n
'IF x(i) <> 0 THEN k = k + 1: y(k) = x(i)
'NEXT'FOR i = 1 TO k: PRINT y(i); : NEXT
'*******Задача 3. Разделение массива ******************
'*Из элементов массива получить два массива, разделив его элементы ‘по какому-либо признаку, например, по знаку элементов'INPUT "Сколько элементов в массиве"; n
'DIM x(n), y(n), z(n)
'a = -9: b = 12'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i
'k = 0: t = 0
'FOR i = 1 TO n
'IF x(i) < 0 THEN k = k + 1: y(k) = x(i)
'IF x(i) > 0 THEN t = t + 1: z(t) = x(i)
'NEXT
'FOR i = 1 TO k: PRINT y(i); : NEXT i
'FOR i = 1 TO t: PRINT z(i); : NEXT i
'*Задача 4.Упорядочивание массива по возрастанию или по убыванию***
'INPUT "Сколько элементов в массиве"; n
'DIM x(n)
'a = -9: b = 12
'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i
'FOR j = 1 TO n
'FOR i = 1 TO n - 1
'IF x(i) > x(i + 1) THEN SWAP x(i), x(i + 1)
'NEXT i, j
'FOR i = 1 TO n: PRINT x(i); : NEXT i
'*******Задача 5. Вставка в массив ******************
'*А как вставить число в уже определенный массив?
'INPUT "Сколько элементов в массиве"; n
'DIM x(n + 1)
'a = -9: b = 12
'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i
'PRINT : PRINT
'INPUT "На какое место поставить элемент"; r'INPUT "Чему он равен"; t
'FOR i = n + 1 TO r STEP -1: x(i) = x(i - 1): NEXT i
'x(r) = t
'FOR i = 1 TO n + 1: PRINT x(i); : NEXT
'**Задача 6. Инверсия массива: перестановка его элементов***
'INPUT "Сколько элементов в массиве"; n
'DIM x(n)
'a = -9: b = 12
'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i
'PRINT : PRINT
'FOR i = 1 TO n / 2
'SWAP x(i), x(n - i + 1)
'NEXT
'FOR i = 1 TO n: PRINT x(i); : NEXT
'*******Задача 7. Переставить все нулевые элементы в конец массива**********
'INPUT "Сколько элементов в массиве"; n
'DIM x(n), y(n)
'a = -3: b = 2
'FOR i = 1 TO n: x(i) = INT(a + (b - a) * RND): PRINT x(i); : NEXT i
'PRINT : PRINT
'k = 0
'FOR i = 1 TO n: IF x(i) <> 0 THEN k = k + 1: y(k) = x(i)
'NEXT i
'FOR i = 1 TO n: PRINT y(i); : NEXT i
'******* Задача 7.1 Та же задача, но без дополнительного массива*****
'FOR i = 1 TO n
'FOR j = 1 TO n - 1
'IF x(j) = 0 THEN SWAP x(j), x(j + 1)
'NEXT j, i'PRINT
'FOR i = 1 TO n: PRINT x(i); : NEXT
'* Законспектируйте задачи для самостоятельного решения**************
'*(1)В массиве a(n) вычислить сумму четных элементов, имеющих четные индексы или выдать сообщение, что таких элементов нет*
'*(2)В массиве a(n) каждый элемент заменить суммой предыдущих.****
'*(3)В целочисленном массиве a(n) исключить элементы, кратные 3**
'*(4)Проверьте, есть ли целочисленном массиве x(n), если есть, найдите
'* наибольший индекс отрицательного элемента**'*(5)Задан массив. Поменять местами а)второй и пятый элементы; б)третий и максимальный элементы; в)первый и минимальный элементы.*
'*(7)Найти сумму элементов массива, стоящих а)до наибольшего элемента;'*8) после наибольшего; с)между наибольшим и наименьшим элементами.****
'*(9) Элементы массива a(n) принимают только значения 1,2 и 3. Переставьте его элементы таким образом, чтобы вначале находились элементы, равные 1, затем 2, и в конце массива 3.
Задачи для домашней работы.
1.Дан целочисленный массив a(n). Подсчитайте, сколько раз встречается в этом массиве максимальное по величине число.
2.Изменить знак всех нечетных элементов массива.
3.Для массива r(n), имеющего положительные и отрицательные элементы вычислить среднее арифметическое положительных и отрицательных элементов.
4.Вычислить суммы элементов с четными и нечетными индексами.
5.Информация о среднесуточной температуре воздуха за месяц задана в виде массива. Определить, сколько дней t была ниже 0.
6.Дан одномерный массив произвольной размерности, в котором не все элементы равны нулю. Получить новый массив путем исключения нулевых элементов.
7.Даны два массива x и y, получить новый массив Z. Элементами массива Z сначала является элементы массива x, а затем элементы массива y.
Какие умения и навыки Вы приобрели на занятии №16?