Задание 4. Задачи по обработке одномерных массивов

Массив – это совокупность элементов, имеющих одинаковое имя и отличающихся номером (индексом) их расположения в последовательности.

Одномерный массив – последовательность чисел А(1), А(2), А(3),..., А(n). Размерность массива равна количеству элементов в нем.

Пример 1: Дан одномерный массив А(i) длиной 20, упорядоченный по убыванию. Переупорядочить массив А(i) по возрастанию его элементов, используя первоначальную упорядоченность массива, и сохранить его значения в массиве В(i). Вывести полученный массив В(i) на дисплей.

Словесный алгоритм решения задачи:

1. В цикле последовательно перебрать все элементы массива В(i) (начиная с первого по двадцатый).

2. Присвоить им значения соответствующих элементов массива А(21−i) (начиная с конца).

3. Вывести полученное значение на дисплей

4. Повторять тело цикла 20 раз.

Блок-схема алгоритма приведена на рис. 6.

Рисунок 6 – Блок-схема примера 1

Пример 2: Дан одномерный массив. Сформировать массив по убыванию. Попарное сравнение чисел в массиве и постановка их по убыванию.

Схема алгоритма и код программы для VBA приведены на рис. 7 и 9.

Пример 3: Сформировать одномерный массив по убыванию методом пузырька.

Блок-схема алгоритма и код программы для VBA приведены на рис. 8 и 10.

Пример 4: Найти максимальный элемент одномерного массива.

Описание алгоритма:

1. Задается число элементов массива n.

2. Начальному значению переменной i присваивается 0.

3. Дается приращение 1 значению переменной i.

4. Первому a(i) числу присваивается максимум.

начало
a(i) i = 1…n
m = n
i = 0
j = i + 1
i = i + 1
a(i)<a(j)
c = a(i)
a(i) = a(j)
a(j) = c
j < n
m = m - 1
m > 2
a(i)
END

Рисунок 7 – Блок-схема примера 2

начало
a(i) i=1…n
i = 0
l = 1
m = n
max = a(i) 0
i = i + 1
max < a(i)
i < n
max=a(i)
l = i
i = m
a(l) = a(i)
a(i) = max
i = 1
n = n - 1
n < 1
a(i)
END

Рисунок 8 – Блок-схема примера 3


Sub poparnoe_sravnenie() Dim i, j, m as Integer For m = 5 to 2 Step -1 For i = 1 to (m - 1) j = i + 1 a(i) = cells(1,i) a(j) = cells(1,j) If a(i) < a(j) then Cells(1,j) = a(i) Cells(1,i) = a(j) Next i Next m End Sub Sub puzir() Dim i, j as Integer Dim k, max as Variant For j = 5 to 1 Step -1 i = 1 l = 1 k = Cells(1, j) max = Cells(1, i) For i = 1 to j If Cells(1, i) < max then max = Cells(1, i) l = i End If Next i Cells(1, j) = max Cells(1, l) = k Next k End Sub
Рисунок 9 – Код программы примера 2 Рисунок 10 – Код программы примера 3

5. Делается сравнение, переменной a(i) с максимумом. Если условие выполняется, переменной a(i) присваивается максимум, если нет— делается еще одна проверка в п.6

6. Проверяется, не закончились ли элементы, которые нужно перебирать (i). Если значение переменной i не удовлетворяет условию, происходит приращение i и ввод новой переменной a(i) – переход к п.3; иначе – завершается выполнение программы.

Блок-схема алгоритма и код программы приведены на рис. 11 и 12.

Пример 5: Найти число положительных, отрицательных чисел и нулей в одномерном массиве

Описание алгоритма:

1. Задаются начальные значения переменных i, j, g, m.

2. Организуется цикл пока значение i больше или равно n. (n – последнее число в массиве).

3. В теле цикла делаются 3 проверки чисел массива на знак числа или равенство нулю. Если значение переменной a(i) удовлетворяет условию, то счетчик увеличивает на единицу соответственно j, g или m ( каждый счетчик соответствует своему условию: j − для а(i)>0; g − для а(i)>0; m − для а(i)=0).

Блок-схема алгоритма и код программы приведены на рис. 13 и 14.

начало
a(i) i = 1…n
i = 0
i = i + 1
a(i) = max
a(i) > max
a(i) = max
i < n
max
END

Рисунок 11 – Блок-схема примера 4

Function maximum(a)

Dim i, n as Integer

n = a.Rows.Count * a.Columns.Count

m = a(1)

For i = 2 to n

If a(i) > m Then

m = a(i)

End If

Next i

maximum = m

End Function

Рисунок 12 – Код программы примера 4

Пример 6: Найти сумму диагональных элементов 3-х мерного массива. Блок-схема алгоритма приведена на рис. 15.

Пример 7 (Задача с использованием алгоритма интерполирования): Имеются данные измерения температуры воздуха в продолжение дня: 8 часов − 7°С; 14 часов − 15°С; 10 часов − 10°С; 17 часов − 9°С и т.д.

Необходимо определить, какой была температура в 9 часов, в 12 часов 30 минут, в 15 часов 15 минут.

Описание алгоритма:

1. Задается начальное значение переменных i, T, t.

2. Организуется цикл пока значение i больше или равно n. (n – последнее число в массиве).

начало
a(i) i=1…n
i = 0
j = 0
g = 0
m = 0
i = i + 1
a(i) > 0
a(i) < 0
a(i) = 0
i > n
j = j + 1
g = g + 1
m = m + 1
i > n
j, g, m
END

Рисунок 13 – Блок-схема примера 5

Function zxc(a)

Dim i, j, m, n, g As Integer

n = a.Rows.Count * a.Columns.Count

j = 0

g = 0

m = 0

For i = 1 to n

If a(i) > 0 Then

j = j + 1

End If

If a(i) < 0 Then

g = g + 1

End If

If a(i) = 0 Then

m = m + 1

End If

Next i

MsgBox(“положительных” + Str(j) + “_” + “отрицательных” + Str(g) + “_” + “нули” + Str(m))

End Function

Рисунок 14 – Код программы примера 5

начало
a(ij) i=1…n j=1…m
i = 0
j = 0
S = 0
i = i + 1
j = i
S = S + a(ij)
i < n
S
END

Рисунок 15 – Блок-схема примера 5

3. Проверка условия, входит ли переменная в уменьшенный промежуток, ограниченный известными значениями. Если значение переменной Т не удовлетворяет условию, то проверяется следующий промежуток; иначе – задача решается по формуле .

Блок-схема алгоритма приведена на рис. 16.

Пример 8 (Решение квадратного уравнения):

Описание алгоритма:

1.Задается начальные значения переменных a, b, c.

2.Вычисляется дискриминант.

3.Выполняется проверка, дискриминанта

4. Если дискриминант меньше нуля – появляется сообщение, что решений нет; иначе — находятся корни уравнения.

Блок-схема алгоритма приведена на рис. 17.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: