Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
учебник по информатике.doc
Скачиваний:
28
Добавлен:
20.11.2018
Размер:
11.68 Mб
Скачать

6.4. Алгоритмизация задач обработки массивов.

Массивом называется совокупность элементов с одинаковыми свойствами. Любой массив характеризуется :

  • именем;

  • размерностью;

  • типом элементов.

Каждый элемент массива имеет определенное значение, координаты своего местоположения в массиве и обозначается при помощи переменной с индексами. Количество индексов зависит от размерности массива.

Массивы могут быть одномерные, двумерные и т. д. В данном разделе остановимся на изучении массивов числового вещественного типа обычной точности.

Обработка любого массива представляет собой циклический вычислительный процесс (как правило, цикл с параметром), в котором параметрами циклов яв­ляются индексы, а в теле циклов используются выражения с индексированными переменными.

Основными видами задач обработки массивов являются:

  • определение суммы значений элементов, произведения значений элементов и среднего арифметического для всех элементов массива;

  • определение суммы значений, произведения значений, количества элементов и среднего арифметического для элементов массива, удовлетворяющих определенным условиям;

  • определение максимального (минимального) по значению элемента и его местоположения в массиве;

  • упорядочение значений элементов в массиве.

Одномерный массив носит название вектора. Элементы одномерного массива имеют по одному индексу. Этот индекс соответствует номеру элемента в векторе.

Рассмотрим вектор A, состоящий из 7 элементов значениями: 30, 25, 18, 20, 7, 11, 9. Любой элемент этого вектора обозначается A( i ) , где i -индекс, 1 <= i <= 7.

При i=1 A( i ) = 30 или A( 1 )= 30;

при i= 5 A ( i ) = 7 или A ( 5 ) = 7.

Элементы одномерного массива располагаются один за другим в последова­тельно расположенных байтах памяти. Рассмотрим типовые задачи обработки вектора.

Задача 5. Определить и вывести сумму значений элементов в массиве A, содержащем 7 элементов.

Блок-схема алгоритма решения данной задачи представлена на рис.40.

Как видно из схемы, процесс решения поставленной задачи включает в себя два последовательно расположенных цикла с параметром.

Блоки 2, 3, 4 и 5 описывают циклический процесс ввода элементов одномерного массива в память. Блоки 7, 8, 9, 10 предназначены для организации цикла накопления суммы элементов массива “нарастающим итогом”. При решении задач подсчета суммы значений элементов массива определяется “чистая“ область памяти, в которой должна накапливаться сумма (блок 6).

Задача 6. Определить количество и сумму значений отрицательных элементов в векторе.

Как видно, постановка задачи дана в общем виде. Блок-схема алго­ритма решения такой задачи приведена на рис.41. В блоке 2 осуществляется ввод количества элементов массива (в переменную n ). Блоки 3, 4, 5, 6 описывают ввод в цикле n элементов массива с произвольно заданным именем V. В блоке 7 подготавливается область памяти для подсчета произведения значе­ний элементов ( p = 1), а в блоке 8 - для подсчета количества элементов(k=0).

Блоки 9 - 14 организуют циклический процесс подсчета количества и произведения значений отрицательных элементов.

1

начало

2

i=1

3

ввод

A ( i )

4

i = i + 1

5

i  7

6

S = 0

7

i = 1

8

S = S + A (i)

9

i = i + 1

10

i  7

11

вывод

S

12

конец

нет

да

1

начало

2

ввод

n

3

i = 1

4

ввод

V ( i )

5

i = i + 1

6

i  n

нет

7

P = 1

8

n = 0

9

i = 1

10

V ( i ) < 0

11

12

13

i = i + 1

14

i  n

15

вывод

P, k

16

конец

да

P=P* V(i)

K = K+1

Рис. 40 Блок-схема алгоритма Рис. 41 Блок-схема алгоритма решения задачи 5. решения задачи 6

.Двухмерный массив носит название матрицы. Рассмотрим числовую матрицу B, состоящую из 4 строк и 3 столбцов (см. рис. 42).

3 2 8

1 6 9

1<= i<=4 10 4 7

5 2 1

1<=j<=3

Рис. 42. Пример числовой матрицы, состоящей из 4 строк и 3 столбцов.

Расположение элемента в двухмерном массиве определяется номером строки и номером столбца, на пересечении которых находится этот элемент, поэтому каждый элемент матрицы имеет два индекса: первый индекс указывает на номер строки, а второй индекс показывает номер столбца.

Если номер строки обозначить буквой i, а номер столбца - буквой j, то для рассматриваемой нами матрицы B (см. рис. 42) будут справедливы следующие утверждения:

при i = 1 и j = 2 B(i,j)= 2; при i = 3 и j = 1 B(i,j)= 10 и т.д.

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

Задача 7. Определить и вывести среднее арифметическое для элементов матрицы B, состоящей из 4 строк и 3 столбцов.

Среднее арифметическое представляет собой отношение суммы значений элементов к количеству этих элементов. Количество в данной задаче определять не нужно, т.к. оно известно ( 4 * 3), поэтому основная обработка сводится к определению суммы значений элементов.

Блок - схема алгоритма решения этой задачи приведена на рис.43.

На схеме хорошо видны два последовательно расположенных циклических участка: один - для организации ввода данных (блоки 2- 8), другой - для организации вычисления суммы значений элементов матрицы (блоки 10 -16).

Каждый из этих циклических участков представляет собой вложенные циклы.

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

Так на схеме (рис. 43) можно различить заголовок внешнего цикла c параметром i (блоки 2,7,8), тело внешнего цикла (блоки 3, 4, 5, 6), которое представляет собой внутренний цикл с параметром j со своим заголовком (блоки 3, 5, 6) и телом цикла (блок 4).

1

начало

2

i=1

3

j = 1

4

ввод

B ( i, j )

5

j = j + 1

да 6

j  3

7

i = i + 1

8

ДА i  4

9 нет

S = 0

10

i = 1

11

j = 1

12

S = S + B (i,j)

13

j = j + 1

да 14

j  3

нет

15

i = i + 1

да 16

i  4

нет

17

S = S/12

18

вывод

S

19

конец


Рис.43. Блок-схема алгоритма решения задачи 7.

1

начало

2

ввод

n, k

3

i = 1

4

j = 1

5

ввод

A (i, j)

6

j = j + 1

7

да i  k

8 нет

i = i + 1

9 i  n

10

M = A (1,1)

11

T = 1

12

L = 1

13

i = 1

14

j = 1

нет 15 да

A (i, j) < M

16

M = A (i, j)

17

T = i

18

L = j

19

j = j + 1

A B C

A B C

да 20

j  k

21 нет

i = i + 1

22

да i  n

нет

23

вывод

M, T, L

24

конец

Рис. 44. Блок-схема алгоритма решения задачи 8.

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

Для определения произвольной матрицы необходимо организовать по запросу ввод количества строк и столбцов матрицы

Блок - схема алгоритма решения этой задачи показана на рис. 44.