Программирование на языке Паскаль Часть II Матрицы
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; B: array[-3..0,-8..M] of integer; Q: array['a'..'d',False..True] of real; const N = 3; M = 4; var A: array[1..N,1..M] of integer; B: array[-3..0,-8..M] of integer; Q: array['a'..'d',False..True] 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 i j j for j:=1 to M do for i:=1 to N do begin
Матрицы 5 Заполнение случайными числами for i:=1 to N do for j:=1 to M do A[i,j] := random(25) - 10; for i:=1 to N do for j:=1 to M do A[i,j] := random(25) - 10; Какой интервал? ? цикл по строкам цикл по столбцам Вывод на экран 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] и вывести ее на экран. «3»: Удвоить все элементы матрицы и вывести её на экран. «4»: Найти минимальный и максимальный элементы в матрице их номера. Формат вывода: Минимальный элемент A[3,4]=-6 Максимальный элемент A[2,2]=10 «5»: Вывести на экран строку, сумма элементов которой максимальна. Формат вывода: Строка 2:
Операции с матрицами 8 Задача 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]
Операции с матрицами 9 Задача 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
Операции с матрицами 10 Задача 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];
Задания 11 Заполнить матрицу из 7 строк и 7 столбцов случайными числами в интервале [10,90] и вывести ее на экран. Заполнить элементы, отмеченные зеленым фоном, числами 99, и вывести полученную матрицу на экран. «3»: «4»: «5»: