Основным инструментом для работы с массивами являются операторы цикла. С их помощью можно записывать значения в массивы, выбирать значения из массивов, менять элементы массивов местами и т.д. Порядок использования циклических операторов для обработки массивов рассмотрим без потери общности на следующих конкретных примерах.
П р и м е р 2. Используя фрагмент алгоритма составить программу, в которой четным элементам массива x[10] будут присвоены значения квадратов индексов, а остальным элементам – нули и выведите этот массив
П р и м е р 3. По заданному алгоритму составить программу вычисления скалярного произведения векторова и b длиной 5 по формуле:
.
Смысл этой задачи сводится к выбору одноименных элементов из массивов, их перемножению с последующим суммированием полученных произведений. Алгоритм имеет следующий вид:
1. Начало;
2. Список данных:
k – целый;
a[5], b[5], c – вещественный;
3. Ввод(a, b);
4. Вывод(a, b);
5. c:=0;
6. Цикл по k от 1 до 5;
7. c:=c + a[k]×b[k];
8. Конец-цикла 6;
9. Вывод(с);
10. Конец.
В этом алгоритме для организации накопления значений “c” мы предварительно “очистили” отведенную для этого ячейку памяти. В каждом новом повторе цикла к значению “c” прибавлялось очередное слагаемое.
П р и м е р 4.Составить таблицу отклонений экспериментальных данных V1 , V2 , . . V10 от их среднего значения.
Здесь необходимо сначала вычислить среднее значение, а затем построчно сформировать и отпечатать таблицу значений.
Фрагмент алгоритма решения этой задачи представлен на рис. 2.
Рис. 2. Фрагмент алгоритма вычисления и печати таблицы отклонений от среднего значения
П р и м е р 5. Составить программу для определения суммы элементов матрицы, состоящей из 2 строк и 3 столбцов, при условии, что первый элемент матрицы больше или равен нулю, или произведения элементов матрицы, если первый элемент меньше нуля.
Математическая постановка задачи будет иметь следующий вид
Задана матрица:
Необходимо рассчитать величину R по формуле:
Алгоритм решения этой задачи, заданной в форме ГСА, приведен на рис. 3.
Рис. 3. Алгоритм обработки матрицы
Рассмотрим еще два примера, иллюстрирующих циклическую обработку массивов.
П р и м е р 6. В соответствии с приведенным фрагментом алгоритма, составить программу позволяющую вычислить сумму положительных элементов, лежащих под (над) дополнительной диагональю матрицы А(4,4):
В задачах такого рода важно определить закономерность изменения индексов элементов массива: в этой задаче нужно увидеть, что сумма индексов элементов, лежащих под дополнительной диагональю, больше 5 (над диагональю – меньше 5; на диагонали – равна 5). Фрагмент алгоритма решения задачи в виде псевдокодов выглядит так:
5. S:=0;
6. Цикл по i от 1 до 4;
7. Цикл по j от 1 до 4;
8. Если (i+j>5) и (A(i,j)>0) То
9. S:=S+A(i,j);
10. Конец-Если 8;
11. Конец-цикла 7;
12. Конец-цикла 6;
13. Вывод(S);
П р и м е р 7.В соответствии с приведенным фрагментом алгоритма, составить программу позволяющую вычислить сумму отрицательных элементов, лежащих над (под) главной диагональю матрицы А(4,4):
В этой задаче важно увидеть, что первый индексу элементов, лежащих над главной диагональю, меньше второго(под диагональю – первый индекс больше второго; на диагонали – индексы равны). Фрагмент алгоритма решения задачи очень похож на предыдущий, изменения потребует лишь пункт 8 (изменится проверяемое логическое условие). Фрагмент алгоритма решения этой задачи можно написать самостоятельно.
Рассмотрим алгоритмы, обеспечивающие сортировку массива. Известно множество методов решения задач такого плана. Реализуем алгоритмически “метод сортировки обменами”.
П р и м е р 8.Дана последовательность чисел a1, a2,…, a10 (одномерный массив a[10]). Требуется переставить числа в порядке возрастания. Для этого сравниваются два соседних числа ai и ai+1. Если ai>ai+1, то делается перестановка. Так продолжается до тех пор, пока не будут выполнены все перестановки. Алгоритм решения задачи показан на рис. 4.
Рис. 26. Алгоритм сортировки массива
П р и м е р 9.Составить программу по приведенному алгоритму.