Матрицы 1
2 Задача: запомнить положение фигур на шахматной доске abcdefgh c6 A[6,3]
3 Матрицы Матрица – это прямоугольная таблица чисел. Матрица – это двумерный массив, в котором каждый элемент имеет два индекса (номер строки и номер столбца) A строка 2 столбец 3 ячейка A[3,4]
4 Матрицы Объявление: const N = 3; M = 4; var A: array[1..N,1..M] of integer; Q: array[1..M,1..N] of real; const N = 3; M = 4; var A: array[1..N,1..M] of integer; Q: array[1..M,1..N] of real; Ввод с клавиатуры: for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,']='); read ( A[i,j] ); end; for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,']='); read ( A[i,j] ); end; Если переставить циклы? ? A[1,1]=25 A[1,2]=14 A[1,3]=14... A[3,4]=54 i-строка J- столбец for j:=1 to M do for i:=1 to N do begin ! Компилятор воспринимает 1-ый индекс как номер строки, как бы он ни был обозначен в программе.
5 Матрицы Заполнение случайными числами Randomize; for i:=1 to N do for j:=1 to M do A[i,j] := random(25); Randomize; for i:=1 to N do for j:=1 to M do A[i,j] := random(25); цикл по строкам цикл по столбцам Вывод на экран for i:=1 to N do begin writeln; end; for i:=1 to N do begin writeln; end; перейти на новую строку for j:=1 to M do write ( A[i,j]:5 ); for j:=1 to M do write ( A[i,j]:5 ); вывод строки Если переставить циклы? ? в той же строке
6 Обработка элементов матрицы Задача: заполнить матрицу из 3 строк и 4 столбцов случайными числами и вывести ее на экран. Найти сумму элементов матрицы. program qq; const N = 3; M = 4; var A: array[1..N,1..M] of integer; i, j, S: integer; begin { заполнение матрицы и вывод на экран} S := 0;{ нахождение суммы элементов матрицы } writeln('Сумма элементов матрицы ', S); End. program qq; const N = 3; M = 4; var A: array[1..N,1..M] of integer; i, j, S: integer; begin { заполнение матрицы и вывод на экран} S := 0;{ нахождение суммы элементов матрицы } writeln('Сумма элементов матрицы ', S); End. for i:=1 to N do for j:=1 to M do S := S + A[i,j]; for i:=1 to N do for j:=1 to M do S := S + A[i,j];
7 Задания Заполнить матрицу из 8 строк и 5 столбцов числами в интервале [-10,10] и вывести ее на экран. А) Найти минимальный и максимальный элементы в матрице их номера. Формат вывода: Минимальный элемент A[3,4]=-6 Максимальный элемент A[2,2]=10 Б) Вывести на экран строку, сумма элементов которой максимальна. Формат вывода: Строка 2: !!! Поиск Min и Max оформить в подпрограмме !!! Поиск Min и Max оформить в подпрограмме.
Домашнее задание: Четные варианты: Дана прямоугольная целочисленная матрица (-10 до 10). А) Найти максимальные элементы в каждом столбце, указав его номер строки. Б) Заменить все максимальные элементы на «0». Нечетные варианты: Дана прямоугольная целочисленная матрица (-10 до 10). А) Найти максимальную сумму элементов каждого столбца. Б) Заменить все элементы матрицы
9 Операции с матрицами Задача 1. Вывести на экран главную диагональ квадратной матрицы из N строк и N столбцов. A[1,N] A[2,2] A[3,3] A[N,N] for i:=1 to N do write ( A[i,i]:5 ); for i:=1 to N do write ( A[i,i]:5 ); Задача 2. Вывести на экран побочную диагональ. A[N,1] A[N-1,2] A[2,N-1] for i:=1 to N do write ( A[i, ]:5 ); for i:=1 to N do write ( A[i, ]:5 ); N+1-i сумма номеров строки и столбца N+1 A[1,1]
10 Операции с матрицами Задача 3. Найти сумму элементов, стоящих на главной диагонали и ниже ее. Одиночный цикл или вложенный? ? строка 1: A[1,1] строка 2: A[2,1]+A[2,2]... строка N: A[N,1]+A[N,2]+...+A[N,N] S := 0; for i:= 1 to N do S := 0; for i:= 1 to N do цикл по всем строкам for j:= 1 to i do S := S + A[i,j]; for j:= 1 to i do S := S + A[i,j]; складываем нужные элементы строки i
11 Операции с матрицами Задача 4. Перестановка строк или столбцов. В матрице из N строк и M столбцов переставить 2-ую и 4-ую строки j A[2,j] A[4,j] for j:=1 to M do begin c := A[2,j]; A[2,j] := A[4,j]; A[4,j] := c; end; for j:=1 to M do begin c := A[2,j]; A[2,j] := A[4,j]; A[4,j] := c; end; Задача 5. К третьему столбцу добавить шестой. for i:=1 to N do A[i,3] := A[i,3] + A[i,6]; for i:=1 to N do A[i,3] := A[i,3] + A[i,6];
12 Задания Заполнить матрицу из 7 строк и 7 столбцов случайными числами в интервале [-10,10] и вывести ее на экран. Обнулить элементы, отмеченные зеленым фоном, и вывести полученную матрицу на экран.