к оглавлению

Типовые задачи обработки одномерных массивов

Цель занятия: оценить понимание электронной лекции, умений определять, заполнять и распечатывать одномерные массивы, программировать простейшие операции обработки одномерных массивов. Таким образом, настоящее занятие – продолжение и развитие первого занятия по одномерным массивам.

Контрольные вопросы для проведения занятия.

*Что есть одномерный массив, привести примеры использования индексированных переменных в других дисциплинах.

*Какой оператор ОПРЕДЕЛЯЕТ массивы?

*Способы присвоения значений элементам массива.

*Как вывести элементы массива на печать?

*Как можно классифицировать задачи по обработке одномерных массивов.

Итак, массив можно определить, спросив у пользователя количество элементов, или определить их количество в операторе DIM:

DIM х(12), у(20). В тренировочных упражнениях будем присваивать значения элементам массива случайные значения, взятые из интервала (а; b) Значения a и b лучше задавать оператором LET.

Запомните! Прежде чем решать задачу на обработку массива, его сначала необходимо ОПРЕДЕЛИТЬ, ПРИСВОИТЬ ЗНАЧЕНИЯ ЕГО ЭЛЕМЕНТАМ, РАСПЕЧАТАТЬ. И только затем в новом цикле приступать к его обработке, т.у. решению задачи.

Условно классифицируем типовые задачи на обработку одномерных массивов.

-поиск и вывод элементов массива по какому-либо условию

-замена элементов массива по какому-либо признаку

-подсчет количества элементов по какому-либо признаку

-суммирование элементов массива по какому-либо признаку

Теперь рассмотрите программы, прокомментируйте их работу, подробно объясните каждую строку. В целях сокращения объема разработки настоящего занятия в некоторых строках через двоеточие помещено более чем более одного оператора. Вы же, вводя программы в память ЭВМ, каждый оператор размещайте в отдельной строке, в таком случае программа будет легче читаться, в ней лучше находить ошибки.

SCREEN 9: COLOR 14, 1: CLS

RANDOMIZE TIMER

'*Из букв своей фамилии сформировать символьный массив. Распечатать его

'*слева на право и с права на лево

'SCREEN 9: COLOR 14, 1: CLS : LOCATE 10, 30

'DATA Р,о,м,а,с,ь

'DIM a$(6)

'FOR i = 1 TO 6:'READ a$(i): 'PRINT a$(i);

'NEXT i

'PRINT : PRINT :

'FOR i = 6 TO 1 STEP -1

'PRINT a$(i);

'NEXT i

'*Дан массив. Напечатать индексы и количество элементов, равных 0

'*Если таких нет, сделать соответствующее сообщение

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'a = -5: b = 5

'DIM x(n)

'FOR i = 1 TO n

'x(i) = CINT(a + (b - a) * RND): 'PRINT x(i);

'NEXT i:'PRINT

'k = 0

'FOR i = 1 TO n

'IF x(i) = 0 THEN 'k = k + 1:'PRINT "x("; i; ")="; x(i)

'NEXT i

'IF k > 0 THEN PRINT "Нулевых элементов"; k; ELSE PRINT "Нулевых элементов нет"

'*Определить и вывести на печать, первое отрицательное значение массива

'*b(n) вместе с индексом. Массив содержит положительные и отрицательные

'*элементы.

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'a = -3: b = 3

'DIM x(n)

'FOR i = 1 TO n

'x(i) = CINT(a + (b - a) * RND): PRINT x(i);

'NEXT i: 'PRINT

'FOR i = 1 TO n

'IF x(i) < 0 THEN

'PRINT "x("; i; ")="; x(i)

'i = n: '**Обратите внимание на эту строку!

'END IF

'NEXT i

'PRINT "Это первый отрицательный элемент"

'*Информация о среднесуточной температуре за месяц хранится в массиве

'*Определить среднемесячную температуру, количество дней, когда

'*температура была ниже нуля.

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'DIM a(30)

'a = -5: b = 20

's = 0: '*Обнуляем сумму для подсчета средней температуры за месяц

't = 0: '* Обнуляем счетчик для подсчета дней когда температура ниже нуля

'FOR i = 1 TO 30: a(i) = INT(a + (b - a) * RND)

's = s + a(i): 'PRINT a(i);

'NEXT i: 'PRINT

'cr = s / 30

'FOR i = 1 TO 30

'IF a(i) < 0 THEN t = t + 1

'NEXT i: PRINT

'PRINT "В месяце "; t; " дней имели температуру ниже нуля"

'PRINT "Среднемесячная температура равна "; cr

'*В распечатке массива выделить отдельными цветами максимальный и

'*минимальный элементы.

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -9: 'b = 13

'max = a(1): min = a(1)

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);

'NEXT i: PRINT

'FOR i = 1 TO n

'IF a(i) > max THEN max = a(i)

'IF a(i) < min THEN min = a(i)

'NEXT i

'FOR i = 1 TO n

'IF a(i) = max THEN COLOR 15

'IF a(i) = min THEN COLOR 10

'PRINT a(i);

'COLOR 14

'NEXT i

'*В произвольном массиве подсчитать количество нечетных элементов,

'*имеющих четные индексы

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -9: 'b = 13

'k = 0

'FOR i = 1 TO n: 'a(i) = INT(a + (b - a) * RND)

'PRINT a(i);

'NEXT i: PRINT

'FOR i = 1 TO n

'IF (a(i) / 2 <> a(i) \ 2) AND (i / 2 = i \ 2) THEN k = k + 1

'NEXT i

'PRINT "Количество нечетных элементов имеющих четные индексы равно "; k

'*Вывести суммы элементов с четными и нечетными индексами

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -9: b = 13

'k = 0: '*Обнуляем сумму элементов с четными индексами

't = 0: '*Обнуляем сумму элементов с нечетными индексами

'FOR i = 1 TO n: 'a(i) = INT(a + (b - a) * RND)

'PRINT a(i);

'NEXT i: PRINT

'FOR i = 1 TO n

'IF i / 2 = i \ 2 THEN k = k + a(i)

'IF i / 2 <> i \ 2 THEN t = t + a(i)

'NEXT i

'PRINT "Сумма элементов с четными индексами равна "; k

'PRINT "Сумма элементов с нечетными индексами равна "; t

'*Дан одномерный массив a(n). Вывести на печать значения, индексы и

'*количество отрицательных элементов

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -9: b = 13: k = 0

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);

'NEXT i

'PRINT

'FOR i = 1 TO n

'IF a(i) < 0 THEN PRINT "x("; i; ") = "; a(i): k = k + 1

'NEXT i

'PRINT "Кол-во отрицательных элементов равно "; k

'*Вывести на печать равные элементы массива вместе с их индексами

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'FOR i = 1 TO n: 'a(i) = INT(10 * RND + 1): PRINT a(i);

'NEXT i: PRINT

'FOR i = 1 TO n - 1

'FOR j = i + 1 TO n

'IF (a(i) = a(j)) THEN PRINT "x("; i; ") = x("; j; ") = "; a(i)

'NEXT j: NEXT i

'*Дан массив a(n) и число С.Найти сумму элементов которые меньше заданного С

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'INPUT "Введите число С"; c

'DIM a(n)

'k = 0

'FOR i = 1 TO n: a(i) = INT(10 * RND + 1): PRINT a(i);

'NEXT i

'PRINT

'FOR i = 1 TO n: IF a(i) < c THEN k = k + a(i)

'NEXT i: 'PRINT

'PRINT "Сумма чисел меньших С равна "; k

'*Элементы массива a(n) принимают только значения 1,2 и 3.

'*переставьте его элементы так чтобы в начале находились элементы

'*равные 1, затем 2, а в конце 3

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = 1: b = 4

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);

'NEXT i: PRINT

'FOR j = 1 TO n

'FOR i = 1 TO n - 1

'IF a(i) > a(i + 1) THEN SWAP a(i), a(i + 1)

'NEXT i: 'NEXT j

'FOR i = 1 TO n: PRINT a(i);: NEXT i

'*В массиве хранится информация о стоимости 30 видов товаров.

'* Найти стоимость двух самых дорогих товаров

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'DIM a(30)

'a = 100: b = 1000: max = 0

'FOR i = 1 TO 30

'a(i) = INT(a + (b - a) * RND): PRINT a(i);

'NEXT i

'FOR i = 1 TO 30

'IF a(i) > max THEN max = a(i)

'NEXT i

'PRINT "1-й самый дорогой товар равен "; max

'FOR i = 1 TO 30: IF a(i) = max THEN a(i) = 0

'NEXT i

'max = 0

'FOR i = 1 TO 30

'IF a(i) > max THEN max = a(i)

'NEXT i

'PRINT "2-й самый дорогой товар равен "; max

'*Дан одномерный массив, содержащий положительные и отрицательные эл-ты.

'* Найти наименьший из положительных элементов

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -10: b = 10

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);: NEXT i

'PRINT

'm = 100

'FOR i = 1 TO n

'IF a(i) > 0 AND a(i) < m THEN m = a(i)

'NEXT i

'PRINT "Наименьший положительный элемент"; m

'*Сколько раз в одномерном массиве встречается максимальный элемент?

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -10: b = 10

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);: NEXT i: PRINT

'm = a(1)

'FOR i = 2 TO n

'IF a(i) > m THEN m = a(i)

'NEXT i

'PRINT "Наибольший элемент"; m

'k = 0

'FOR i = 1 TO n

'IF a(i) = m THEN k = k + 1

'NEXT i

'PRINT "Он встречается в массиве"; k; "раз"

'*Заданны массивы a(n) и b(n).Сформировать и распечатать массивы s(n) и p(n),

'*состоящие соответственно из сумм и произведений элементов данных массивов.

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n), b(n), s(n), p(n)

'a = -1: b = 8

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'b(i) = INT(a + (b - a) * RND)

'NEXT i

'FOR i = 1 TO n: PRINT a(i);: NEXT i

'PRINT : PRINT :

'FOR i = 1 TO n: PRINT b(i);: NEXT i

'PRINT

'FOR i = 1 TO n: s(i) = a(i) + b(i)

'PRINT s(i);: NEXT i

'PRINT : PRINT :

'FOR i = 1 TO n: p(i) = a(i) * b(i)

'PRINT p(i);

'NEXT i

'*Всем элементам массива a(12) присвоено значение 1

'*Заменить элементы следующим образом: элементам стоящим

'*на четных местах присвоить значение 2, элементам, индекс которых кратен 3

'*присвоим значение 0, второе условие приоритетно. Распечатать массив

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'DIM a(12)

'FOR i = 1 TO 12

'a(i) = 1: NEXT i

'FOR i = 1 TO 12

'IF i \ 2 = i / 2 THEN a(i) = 2

'NEXT i

'FOR i = 1 TO 12

'IF (i \ 3 = i / 3) THEN a(i) = 0

'PRINT TAB(10); "x("; i; ") ="; a(i)

'NEXT i

'*Задан одномерный целочисленный массив a(n), содержащий положительные и

'*отрицательные элементы. Вывести индексы и значения противоположных

'*элементов если таковых нет, вывести соответствующее сообщение

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n)

'a = -10: b = 10

'FOR i = 1 TO n: a(i) = INT(a + (b - a) * RND)

'PRINT a(i);

'NEXT i: PRINT

'FOR i = 1 TO n - 1

'FOR j = i + 1 TO n

'IF (a(i) = -a(j)) THEN PRINT "x("; i; ") = "; a(i); " = x("; j; ") = "; a(j)

'NEXT j

'NEXT i

'*Задан одномерный массив x(20) значения которого от 2 с шагом 0.03

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'DIM a(20)

'a(1) = 2

'FOR i = 2 TO 20: a(i) = a(i - 1) + .03

'PRINT a(i);: NEXT i

'*Из элементов массива a(n) кратных 3 сформировать массив b(k)или выдать

'*сообщение, что таких элементов нет

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n), b(n)

'FOR i = 1 TO n: a(i) = INT(10 * RND + 1)

'PRINT a(i);: NEXT i

'FOR i = 1 TO n

'IF a(i) / 3 = a(i) \ 3 THEN k = k + 1: b(k) = a(i)

'NEXT i

'PRINT

'IF k = 0 THEN PRINT "Таких чисел нет"

'FOR i = 1 TO k: PRINT b(i);

'NEXT i

'*Дано n случайных точек на отрезке [a,b] Посчитать значение функции

'* y=cosx+xsinx в этих точках. Результат записать в массив

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Введите координаты отрезка [a,b]"; a, b

'INPUT "Сколько вы возьмёте случайных чисел "; n

'DIM a(n)

'FOR i = 1 TO n

'x = INT(a + (b - a) * RND)

'a(i) = COS(x) + x * SIN(x)

'PRINT a(i);

'NEXT i

'*Дан одномерный массив имеющий не все нулевые элементы

'*Получить новый массив путем исключения нулевых элементов

'SCREEN 9: COLOR 14, 1: CLS

'RANDOMIZE TIMER

'INPUT "Сколько элементов в Вашем массиве"; n

'DIM a(n), b(n)

'FOR i = 1 TO n: a(i) = INT(10 * RND - 5)

'PRINT a(i);:NEXT i

'FOR i = 1 TO n

'IF a(i) <> 0 THEN k = k + 1: b(k) = a(i)

'NEXT i: PRINT

'FOR i = 1 TO k: PRINT b(i);: NEXT i

Выберите 3-4 задачи по своим силам и вкусам и разработайте программы и их защиту

1.Найти сумму элементов массива.

2. Найти сумму положительных элементов массива.

3. Найти сумму отрицательных элементов массива.

4.Найти сумму элементов, которые меньше заданного числа.

5. Найти сумму элементов, имеющих четный индекс.

6. Найти сумму четных элементов.

7.Посчитать количество элементов, делящихся на 5 или выдать сообщение, что таковых нет.

8.Пожительные элементы заменить единицами, отрицательные - нулями.

9.Все элементы со значениями меньше 5-ти в данном одномерном массиве заменить нулями.

10.Вывести суммы элементов с четными и нечетными индексами.

11. В массиве подсчитать количество положительных и отрицательных элементов.

12.Найти среднее арифметическое элементов массива.

13.Найти наименьший положительный элемент массива.

14.Каждый третий элемент массива заменить числом 10.

15.Найти количество элементов массива больших среднего арифметического его элементов.

16.Есть ли среди положительных элементов массива элементы, равные своему индексу, в противном случае выдать сообщение, что таковых нет.

17.Найти максимальный и минимальный элементы массива.

18. Подсчитать сколько раз в массиве встречается максимальный (минимальный) элемент.

19.Найдите наибольший индекс отрицательного элемента.

20.Есть ли среди элементов массива противоположные числа?

Какие умения и навыки Вы приобрели на занятии №15?

  • Классифицировали типовые задачи обработки одномерных массивов.
  • Рассмотрели типовые, но различные задачи на одномерные массивы
  • Овладели опытом анализа текстовых задач по обработке массивов;
  • Представили на проверку свои первые программы по обработке одномерных массивов;

Знаете ли Вы, что абстракция - это процесс изменения уровня детализации программы. Когда мы абстрагируемся от проблемы, мы предполагаем игнорирование ряда подробностей с тем, чтобы свести задачу к более простой.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution