Двумерные массивы Обработка относительно диагоналей
Главная диагональ i = j Обработка элементов матрицы, расположенных: на главной диагонали (например, сумма элементов НА главной диагонали):… s:=0; For i:=1 To n Do s:=s + x[i,i]; … выше главной диагонали (например, сумма элементов ВЫШЕ главной диагонали): … s:=0; For i:=1 To n Do For j:=1 To n Do If i < j then s:=s + x[i,j]; … ниже главной диагонали (например, сумма элементов НИЖЕ главной диагонали): … s:=0; For i:=1 To n Do For j:=1 To n Do If i > j then s:=s + x[i,j]; …
Побочная диагональ i = n – j + 1 Обработка элементов матрицы, расположенных: на побочной диагонали (например, сумма элементов НА побочной диагонали):… s:=0; For i:=1 To n Do s:=s + x[i, n - i +1]; … выше побочной диагонали (например, сумма элементов ВЫШЕ побочной диагонали): … s:=0; For i:=1 To n Do For j:=1 To n Do If i < n - j + 1 then s:=s + x[i,j]; … ниже побочной диагонали (например, сумма элементов НА побочной диагонали): … s:=0; For i:=1 To n Do For j:=1 To n Do If i > n - j + 1 then s:=s + x[i,j]; …
Обработка квадратной матрицы (рациональный способ)
Предложенные выше алгоритмы обработки квадратного массива относительно диагоналей нерациональны, так как перебираются все элементы массива. Более рационально ограничить перебор элементов, введя, например, зависимость начального и конечного значений управляющей переменной внутреннего цикла от от значения счётчика внешнего цикла. НИЖЕ и НА главной диагонали: FOR i :=1 TO n DO FOR j := 1 TO i DO…; ВЫШЕ и НА главной диагонали: FOR i :=1 TO n DO FOR j := i TO n DO…;
ВЫШЕ и НА побочной диагонали: FOR i :=1 TO n DO FOR j := 1 TO n - i + 1 DO …; НИЖЕ и НА побочной диагонали: FOR i :=1 TO n DO FOR j := n - i + 1 TO n DO…;
Задачи 1.Заполнить элементы квадратного массива так, как предложено на рисунке: а) б) в)
г) д) е)
ж) з)
2. Дан двумерный массив размерностью n x n. Найти максимальный элемент в заштрихованной области массива: а) … i:=1; j:=n; While i
б) б) … i:=1; j:=n; While i = j Do Begin IF a[i,j] …Then …; Inc(j); End; Dec(i); j:=n – i + 1; End;
г) г)… i:=n; j:=1; While i >= j Do Begin IF a[i,j] …Then …; Dec(i); End; Inc(j); i:=n – j + 1; End;
2. Определить, является ли массив А[1..n,1..n] симметричным относительно своей главной или побочной диагонали. 3. Массив А[1..n,1..n] разбивается на четыре четверти, ограниченные главной и побочной диагоналями: верхнюю, нижнюю, левую и правую. Найти сумму элементов: верхней, правой, нижней, левой четвертей (без учёта элементов, расположенных на диагоналях).
4. Массив А[1..n,1..n] разбивается на четыре четверти, ограниченные главной и побочной диагоналями: верхнюю, нижнюю, левую и правую. Поменять местами элементы: верхней и нижней четвертей, правой и левой четвертей. 6. Дан массив А[1..n,1..n] целых чисел. Упорядочить все строки матрицы в порядке неубывания минимального значения элемента в каждой строке 5. Дан массив А[1..n,1..n] целых чисел. Упорядочить по возрастанию элементы массива по строкам. 7. Дана квадратная матрица целых чисел. Упорядочить все элементы на главной диагонали матрицы и на всех параллельных диагоналях в порядке неубывания сверху вниз.