Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Обработка части матрицы



Рассмотрим алгоритм обработки элементов главной или побочной диагонали квадратной матрицы const n=5; int A[n][n]; котораяодним из ранее рассмотренных способов определена. Структуру циклов можно оставить такой же, как при решении аналогичной задачи для одномерного массива.

Пример 10. Найдём среднее значение главной диагонали квадратной матрицы.

Для этого необязательно писать два вложенных цикла:

float Sum=0; for (int i=0; i<n; i++)

for (int j=0; j< n; j++) if (i==j)Sum+=A[i][j];

Sum/=n;

Так как для элементов главной диагонали оба индекса одинаковы, и диагональ матрицы можно рассматривать как одномерный массив, то это можно выполнить компактнее с помощью одного цикла:

float Sum=0; for (int i=0; i<n; i++) Sum+=A[i][i];

Sum/=n;

Сравните с задачей нахождения этого же параметра в одномерном массиве.

Пример 11. Найдём среднее значение побочной диагонали.

Для обработки побочной диагонали, как и при решении некоторых других типов задач, необходимо найти зависимость второго индекса от первого. Так как сумма индексов равна n-1, то второй индекс будет равен n-1-i, где i — номер строки. float Sum=0;

for (int i=0; i<n; i++) Sum+=A[i][ n-1-i];

Sum/=n;

Верхний треугольник квадратной матрицы относительно главной диагонали — это те элементы, у которых i<j, если главная диагональ не включается, или i<=j, если включается. Аналогично определяется нижний треугольник относительно главной диагонали и треугольники относительно побочной диагонали. Для обработки таких треугольников необходимо определить, как изменяются индексы.

Пример 12. Найти количество нулевых элементов верхнего треугольника относительно главной диагонали, включая и её.

В нулевой строке j изменяется от 0 до n-1, в первой строке — от 1 до n-1, во второй строке — от 2 до n-1 и так далее. Значит, в произвольной i -й строке индекс j изменяется от i до n-1. Получим

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

for (int j=i; j< n; j++) if (A[i][j] ==0) K0++;

Если диагональные элементы не надо анализировать, то заголовок внутреннего цикла будет таким: for (int j=i+1; j< n; j++)…

Упражнения. Эту же задачу решить для

a) нижнего треугольника относительно главной диагонали;

b) нижнего треугольника относительно побочной диагонали;

c) верхнего треугольника относительно побочной диагонали;





Дата публикования: 2015-02-18; Прочитано: 512 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...