
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.207] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Возник простейший вопрос обхода матрицы по диагоналям. То есть, нужно пройти каждую диагональ по отдельности и, допустим, осуществить в оных поиск какого-нибудь элемента с определенным значением или, например, суммирование элементов диагонали. Спасибо. |
Сообщ.
#2
,
|
|
|
Заводишь цикл по i и элемент главной диагонали будет иметь координаты a[i,i],
а элемент побочной диагонали соответственно a[i,m-i], где m - это размерность матрицы. |
Сообщ.
#3
,
|
|
|
Что приходит на ум...
a - матрица, индексация: [строка от 0,столбец от 0] m - число строк n - число столбцов ![]() ![]() /* Диагонали, параллельные главной */ for dx in 0..n-1 // каждая диагональ (1 из 2) { y = 0 for x in dx..n-1 { break when y>=m обрабатываем элемент a[x,y] y++ } } for dy in 1..m-1 // каждая диагональ (2 из 2) (от 1, чтобы не повторяться насчёт главной диагонали) { x = 0 for y in dy..m-1 { break when x>=n обрабатываем элемент a[x,y] x++ } } /* Диагонали, перпендикулярные главной */ for dx in 0..n-1 // каждая диагональ (1 из 2) { y = 0 for x in n-1..dx { break when y>=m обрабатываем элемент a[x,y] y++ } } for dy in 1..m-1 // каждая диагональ (2 из 2) (от 1, чтобы не повторяться насчёт главной диагонали) { x = 0 for y in m-1..dy { break when x>=n обрабатываем элемент a[x,y] x++ } } Чё-то много получилось! ![]() На всякий случай писал не для квадратных матриц, хотя не уверен, что термин "диагональ" для них применим. |
Сообщ.
#4
,
|
|
|
Цитата На всякий случай писал не для квадратных матриц Любую матрицу можно привести к квадратной, дополнив недостающие столбцы/строки нулями. |
Сообщ.
#5
,
|
|
|
PAVНу действительные числа тоже частный случай комплексных, но это не значит, что квадратный корень можно извлечь из любого действительного числа
![]() |