Матрицы
Матрицей называется таблица n * m (n строк, m столбцов). Пример. Матрица 3 * 3 имеет вид а 11 а 12 а 13 а 21 а 22 а 23 а 31 а 32 а 33 Элемент матрицы - a ij, где i – номер строки, j - номер столбца. На языке программирования записывается a[i,j].
Пример. Пусть матрица 4 * 4 имеет вид Значит, а [1,1] = 4, a[4,2] = 8.
Главная диагональ Пусть матрица 3 * 3 имеет вид Элементы с индексами а [1,1], а [2,2], а [3,3] расположены на главной диагонали Элементы с индексами а [3,1], а [2,2], а [1,3] расположены на побочной диагонали.
Задача. Сформировать матрицу n*n, найти сумму элементов главной диагонали, max каждой строки. Разобьём задачу на подзадачи: 1.Формирование матрицы 2.Вывод исходной матрицы на экран 3.Нахождение суммы элементов главной диагонали и вывод на экран 4.Нахождение max каждой строки и вывод на экран.
Задача 1. Сформировать матрицу n*n, ввод с клавиатуры по строкам. Каждая строка вводится следующим образом: элементы строки вводятся через пробел, в конце ввода строки нажимается клавиша ENTER.
program matrica; const n=4; var a:array[1..n,1..n] of integer; i,j:integer; begin {vvod}; write('В строке элементов - ',n); writeln(' столбцов - ',n); writeln('Введите значения элементов в строке через пробел'); for i:=1 to n do begin for j:=1 to n do read (a[i,j]); writeln; end; readln; end.
Задача 2. Вывод исходной матрицы на экран. {vivod}; writeln('Исходная матрица'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end;
Задача 3. Нахождение суммы элементов главной диагонали и вывод на экран. {summa}; S:=0; for i:=1 to n do S:=S+a[i,i]; writeln('Сумма элементов главной диагонали равна', s); writeln;
Задача 4. Нахождение максимального элемента каждой строки и вывод его на экран. Из максимальных элементов каждой строки формируется одномерный массив с именем b размерности n. Необходимо внести в раздел описания переменных строку b:array[1..n] of integer;
{massiv max po ctrokam}; for i:=1 to n do begin b[i]:=a[i,1]; for j:=2 to n do if b[i]< a[i,j] then b[i]:=a[i,j]; end; {vivod max po ctrokam}; writeln('max по строкам); for i:=1 to n do writeln('В ',i,' строке max равен ',b[i]); readln; end.
Таким образом, программа решения задачи Сформировать матрицу n*n, найти сумму элементов главной диагонали, max каждой строки будет целиком выглядеть так
program matrica; Сonst n=4; Var a:array[1..n,1..n] of integer; b:array[1..n] of integer; i,j,s:integer; begin {vvod}; write('В строке элементов - ',n);writeln(' столбцов - ',n); writeln('Введите значения элементов в строке через пробел'); for i:=1 to n do begin for j:=1 to n do read(a[i,j]); writeln; end; readln; {vivod}; writeln('Исходная матрица'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:4); writeln; end;
{summa}; S:=0; for i:=1 to n do S:=S+a[i,i]; writeln('Сумма элементов главной диагонали равна',s); {massiv max po ctrokam}; for i:=1 to n do begin b[i]:=a[i,1]; for j:=2 to n do if b[i]< a[i,j] then b[i]:=a[i,j]; end; {vivod max po ctrokam}; writeln('max по строкам); for i:=1 to n do writeln('В ',i,' строке max равен ',b[i]); readln; end.
V stroke elementov - 4 stоlbcov - 4 vvedite znachenia po ctrokam cherez probel Isxodnay matrica Summa elementov glavnoi diagonali ravna 20 max po ctrokam V 1 stroke max raven 4 V 2 stroke max raven 8 V 3 stroke max raven 7 V 4 stroke max raven 11