Особенности обработки матриц

При обработке матриц нужно учитывать ряд особенностей, некоторые из которых мы рассмотрим на примерах. Рассмотрим задачу вывода элементов, расположенных на главной диагонали. Главная диагональ матрицы определяется тем, что на ней находятся элементы, оба индекса которых одинаковы: A1,1, A2,2, A3,3 и т.д. Способ, который может показаться наиболее очевидным – это проверить индексы массива на равенство:

for (int i=0; i<n; i++) {

for (int j=0; j<n; j++) {

if (i==j) {

printf("%d ", matrix[i][j]);

}

}

printf("\n");

}

Однако почему бы не использовать это условие по-другому. Мы можем избавиться от одного цикла, взяв одинаковые индексы:

for (int i=0; i<n; i++) {

printf("%5d\n", numbers[i][i]);

}

Такое усовершенствование не повлияет на результат, но сокращает объем программного кода и улучшает производительность.

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

//Переменная, которая будет хранить

//индекс столбца с максимальной суммой

int max_index = 0;

//Переменная, которая будет хранить

//максимальную среди всех столбцов сумму

int max_sum = 0;

//Пробегаем по всем столбцам

for (int j=0; j<n; j++) {

//Вычисляем сумму в столбце с индексом j

int sum = 0;

for (int i=0; i<n; i++) {

sum += numbers[i][j];

}

//Если полученная сумма больше,

//то переприсваиваем

if (sum > max_sum) {

max_sum = sum;

max_index = j;

}

}

printf("Макс. сумма равна %d\n", max_sum);

printf("Столбец с индексом %d\n", max_index);

Обработка данных «на лету»


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



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