Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Лабы_Ч2.doc
Скачиваний:
5
Добавлен:
09.11.2019
Размер:
2 Mб
Скачать

7.1.17 Тотальная обработка данных в матрицах

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

Ниже перечислены некоторые задачи тотальной обработки матриц.

  • Заполнение матрицы случайными или другими числами.

  • Поиск суммы всех элементов матрицы.

  • Поиск максимального или минимального элемента в матрице.

  • Умножение матрицы на число.

  • Сложение двух матриц одинакового размера.

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

Примером тотальной обработки матрицы может служить процедура обнуления элементов числовой матрицы.

procedure fillMatrixWithZero(var m:TMatrixInt10x10, nRow, nCol);

var i, j : integer;

begin

for i:=1 to nRow do

for j:=1 to nCol do

m[i,j]:=0;

end;

В эту процедуру передается адрес матрицы, а также количество строк (nRow) и количество столбцов (nCol)

Все задачи тотальной обработки имеют подобную структуру. Отличаются они только инструкциями внутри цикла.

7.1.18Выборочная обработка матрицы

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

  • Элементы главной диагонали квадратной матрицы.

  • Элементы вспомогательной диагонали квадратной матрицы.

  • Элементы некоторого столбца или строки матрицы.

  • Элементы матрицы, расположенные по ее кромке.

  • Элементы квадратной матрицы, расположение которых соответствует расположению белых или черных клеток шахматной доски.

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

В первом примере у обрабатываемых элементов, которые расположены на главной диагонали матрицы, номера строки и столбца совпадают. Поэтому в цикле можно изменять номер столбца, а строке присваивать тот же номер.

Во втором случае, на вспомогательной диагонали, номер столбца j связан с номером строки i соотношением j=nCol–i+1. В этом соотношении nColэто максимальный индекс для столбца.

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

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

При «шахматной» группировке, можно организовать двойной цикл, как при тотальной обработке, но обрабатывать только те элементы, сумма индексов которых является четной (или нечетной).