Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Леднева_программирование_на_JAVA.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
11 Мб
Скачать
☆

Работа с диагоналями матриц выше и ниже главной/побочной

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

Для всех вариантов диагоналей (всех направлений) будем рассматривать номер диагонали (k), который соответствует номеру соответствующей строки матрицы и изменяется от 0 до b.length – 1, и индексы элементов – номера строки i и номер столбца, вычисленный через номер строки i.

Формирование диагоналей можно организовать двумя вложенными циклами.

Алгоритм можно записать следующим образом:

Для диагонали k от 0 до (b.length – 1)

а) вывести номер диагонали;

б) для номера строки i от начального значения до конечного значения вывести элемент.

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

Элементы главной диагонали и диагоналей ниже (рис. 8.2) будут формироваться следующим образом:

а) начальное значение номера строки i равно номеру диагонали k, а конечное равно b.length – 1;

б) текущий индекс столбца j меньше номера строки на значение номера диагонали.

b00

b01

b02

b03

b04

b05

b10

b11

b12

b13

b14

b15

b20

b21

b22

b23

b24

b25

b30

b31

b32

b33

b34

b35

b40

b41

b42

b43

b44

b45

b50

b51

b52

b53

b54

b55

Рис. 8.2

Элементы главной диагонали и диагоналей выше (рис. 8.3) будут формироваться следующим образом:

а) начальное значение номера строки i будет равно 0, а конечное b.length – 1 – k;

б) текущий индекс столбца j больше номера строки i на значение номера диагонали

j

b

b.length-1

0

00

b 01

b 02

b 03

b 04

b

k=0 j=i+ 0

k=1 j=i + 1

k=2 j=i+ 2

k=3 j=i+ 3

…

05

b10

b11

b12

b13

b14

b15

b

k

i

20

b21

b22

b23

b24

b25

b30

b31

b32

b33

b34

b35

b

b.length-1-k

40

b41

b42

b43

b44

b45

b

0

50

b51

b52

b53

b54

b55

Рис. 8.3

Элементы побочной диагонали и диагоналей ниже (рис. 8.4) будут формироваться следующим образом:

а) начальное значение номера строки i будет равно номеру диагонали k, а конечное составит b.length – 1;

б) для текущего индекса столбца j можно вывести простую формулу из представленных на рисунке пояснений (сделать самостоятельно!).

b00

b01

b02

b03

b04

b05

b10

b11

b12

b13

b14

b15

b20

b21

b22

b23

b24

b25

b30

b31

b32

b33

b34

b35

b40

b41

b42

b43

b44

b45

b50

b51

b52

b53

b54

b55

 

Рис. 8.4

Элементы побочной диагонали и диагоналей выше (рис. 8.5) будут формироваться следующим образом:

а) начальное значение номера строки i будет равно 0, а конечное составит b.length – 1 – k;

б) для индекса столбца j можно вывести простую формулу из представленных на рисунке пояснений (сделать самостоятельно!).

b00

b01

b02

b03

b04

b05

b10

b11

b12

b13

b14

b15

b20

b21

b22

b23

b24

b25

b30

b31

b32

b33

b34

b35

b40

b41

b42

b43

b44

b45

b50

b51

b52

b53

b54

b55

Рис. 8.5