Скачать презентацию Двухмерным массивом называется совокупность данных каждое значение которых Скачать презентацию Двухмерным массивом называется совокупность данных каждое значение которых

Двухмерные массивы.ppt

  • Количество слайдов: 18

Двухмерным массивом называется совокупность данных, каждое значение которых зависит от двух чисел, которые можно Двухмерным массивом называется совокупность данных, каждое значение которых зависит от двух чисел, которые можно рассматривать как индекс строки и индекс столбца в матрице. В разделе описания переменных двухмерные массивы можно описать: <имя массива>: array [<н_индекс_1>. . <в_индекс_1>, <н_индекс_2>. . <в_индекс2>] of <тип>; Первый индекс соответствует номеру строки, второй – номеру столбца. Например матрица состоящая из трех строк и четырех столбцов будет описана следующим образом: A : array [1. . 3, 1. . 4] of integer; Для ввода двухмерных массивов, так же как и одномерных можно использовать генератор случайных чисел, константы и файлы.

Матрицы, у которых число строк равно числу столбцов, называются квадратными. A(n, n) – квадратная Матрицы, у которых число строк равно числу столбцов, называются квадратными. A(n, n) – квадратная матрица. Основные свойства квадратных матриц: 1. Квадратные матрицы имеют главную и побочную диагонали. А= 379 467 578 Если: • • Для этой матрицы на главной диагонали лежат элементы 3, 6 и 8, а на побочной 9, 6 и 5. i=j – элементы расположены на главной диагонали; i>j – элементы расположены ниже главной диагонали; i=j – элементы расположены на главной диагонали и ниже; i<=j – элементы расположены на главной диагонали и выше; i+j=n+1 – элементы расположены на побочной диагонали; i+jn+1 – элементы расположены под побочной диагональю;

2. Квадратная матрица, у которой все элементы, исключая элементы главной диагонали, равны нулю, называется 2. Квадратная матрица, у которой все элементы, исключая элементы главной диагонали, равны нулю, называется диагональной матрицей: А= 300 010 005 3. Диагональная матрица, у которой все элементы, стоящие на главной Диагонали, равны 1, называется единичной матрицей: А= 100 010 001

4. Если в матрице А(m, n) поменять местами строки и столбцы, то Получится матрица 4. Если в матрице А(m, n) поменять местами строки и столбцы, то Получится матрица Аt(m, n), которая называется транспонированной матрицей: A= t А = a 11 a 12 a 21 a 22 … … am 1 am 2 … … a 1 n a 2 n … amn a 11 a 21 a 12 a 22 … … a 1 n a 2 n … … a m 1 am 2 … amn

Действия выполняемые над матрицами: • Суммой однотипных матриц A(aij) и B(bij) называют матрицу C(aij+bij)=C(cij), Действия выполняемые над матрицами: • Суммой однотипных матриц A(aij) и B(bij) называют матрицу C(aij+bij)=C(cij), каждый элемент которой равен сумме соответствующих элементов матриц А и В, С=А+В, cij=aij+bij • Разностью матриц A(aij) и B(bij) называют матрицу C(aij - bij)=C(cij), каждый элемент которой равен сумме соответствующих элементов матриц А и В, С=А-В, cij=aij – bij • Произведением матрицы А на некоторое число r называют матрицу A * г, у которой каждый элемент равен aij* r

 • Произведением двух матриц и называется такая матрица ( число столбцов матрицы А • Произведением двух матриц и называется такая матрица ( число столбцов матрицы А должно равняться числу строк матрицы В), у которой элементы определяются по формуле где i=1…m, j=1…p. То есть нужно перемножить соответствующие элементы i-ой строки матрицы А на элементы j-го столбца матрицы В и полученные произведения сложить. При работе с двухмерными массивами, следует помнить о том что, как правило, для обработки массивов используются вложенные циклы

Рассмотрим некоторые алгоритмы: 1. Вывод матрицы в виде таблицы: Program prim 1; var a: Рассмотрим некоторые алгоритмы: 1. Вывод матрицы в виде таблицы: Program prim 1; var a: array[1. . 4, 1. . 4] of integer; i, j: integer; begin for i: =1 to 4 do begin for j: =1 to 4 do begin a[i, j]: =random(10); write(a[i, j], ' '); end; writeln; end.

2. Суммирование матриц: Var a, b, c: array[1. . 4, 1. . 4] of 2. Суммирование матриц: Var a, b, c: array[1. . 4, 1. . 4] of integer; i, j: integer; begin for i: =1 to 4 do begin for j: =1 to 4 do begin a[i, j]: =random(10); write(a[i, j], ' '); end; writeln; for i: =1 to 4 do begin for j: =1 to 4 do begin b[i, j]: =random(10); write(b[i, j], ' '); end; writeln; for i: =1 to 4 do begin for j: =1 to 4 do begin c[i, j]: =a[i, j]+b[i, j]; write(c[i, j], ' '); end; writeln; end.

3. Умножение матриц var a, b, c: array[1. . 4, 1. . 4] of 3. Умножение матриц var a, b, c: array[1. . 4, 1. . 4] of integer; i, j, s, k: integer; begin for i: =1 to 4 do begin for j: =1 to 4 do begin a[i, j]: =random(10); write(a[i, j], ' '); end; writeln; for i: =1 to 4 do begin for j: =1 to 4 do Begin b[i, j]: =random(10); write(b[i, j], ' '); end; writeln; for i: =1 to 4 do begin for j: =1 to 4 do begin s: =0; for k: =1 to 4 do s: =s+a[i, k]*b[k, j]; c[i, j]: =s; write(c[i, j], ' '); end; writeln; end. Задание матрицы А Задание матрицы В Умножение матриц

3. Транспонирование матриц: При транспонировании матрицы элементы, расположенные на главной диагонали исходной и транспонированной 3. Транспонирование матриц: При транспонировании матрицы элементы, расположенные на главной диагонали исходной и транспонированной матриц, одни и те же. Транспонировать матрицу – значит зеркально отразить ее элементы относительно главной диагонали. Для этого можно ввести новый массив Следующим образом: For i: =1 to n do For j: =1 to n do b[ i, j]: =a[ i, j]; Задание 1. Самостоятельно напишите программу транспонирования матрицы. Количество строк и столбцов задается по запросу с экрана.

4. Задачи на поворот матриц. Пусть дана квадратная матрица Аnn состоящая из целых чисел. 4. Задачи на поворот матриц. Пусть дана квадратная матрица Аnn состоящая из целых чисел. Повернем ее на 900 по часовой стрелке. Дана матрица А= Матрица после поворота: А’= Задание 2. Самостоятельно запишите соответствие между элементами матриц А и А’. Например a 11 соответствует a’ 31 и т. д.

Проанализировав соотношение между элементами матриц приходим к выводу: отношение матриц А(I, j) и A’(I’, Проанализировав соотношение между элементами матриц приходим к выводу: отношение матриц А(I, j) и A’(I’, j’) следующее i=j’, j+I’=n+1 следовательно А’(I’, j’)=A(n+1 -j, i) const n=3; var a, b: array[1. . n, 1. . n] of integer; i, j: integer; begin randomize; for i: =1 to n do begin for j: =1 to n do begin a[i, j]: =random(20); write(a[i, j]: 4); end; writeln; for i: =1 to n do begin for j: =1 to n do begin b[i, j]: =a[n+1 -j, i]; write(b[i, j]: 4); end; writeln; end.

Проведя аналогичные рассуждения получим следующие соотношения: а) при повороте на 180 градусов по часовой Проведя аналогичные рассуждения получим следующие соотношения: а) при повороте на 180 градусов по часовой стрелке : j+j’=n+1; i+I’=n+1 Следовательно A’(I’, j’)=A(n+1 -I, n=1 -j). b) При отражении матрицы относительно горизонтальной оси симметрии: J=j’, i+I’=n+1, следовательно A’(I’, j’)=A(n+1 -i, j). const n=4; var a, b: array[1. . n, 1. . n] of integer; i, j: integer; begin randomize; for i: =1 to n do begin for j: =1 to n do begin a[i, j]: =random(20); write(a[i, j]: 4); end; writeln; for i: =1 to n do begin for j: =1 to n do begin b[i, j]: =a[n+1 -i, j]; write(b[i, j]: 4); end; writeln; end.

c) При зеркальном отображении элементов матрицы относительно побочной диагонали: i+j’=n+1, j+i ’=n+1, следовательно A’[i c) При зеркальном отображении элементов матрицы относительно побочной диагонали: i+j’=n+1, j+i ’=n+1, следовательно A’[i ’, j ’]=A[n+1 -j, n+1 -i] Задание 3. Напишите программу, которая позволяет: А) повернуть элементы матрицы на 90 градусов против часовой стрелки В)Отобразить элементы матрицы относительно вертикальной оси симметрии

Рассмотрим решение некоторых задач: 1. Дана матрица А 5, 5 , состоящая из случайных Рассмотрим решение некоторых задач: 1. Дана матрица А 5, 5 , состоящая из случайных чисел. Составить одномерный массив S, в котором будут содержаться значения суммы элементов каждого столбца матрицы. Const n=5; Var a: array[1. . n, 1. . n] of integer; s: array[1. . n] of integer; I, j, ss: integer; Begin randomize; for i: =1 to n do begin for j: =1 to n do begin a[i, j]: =random(20); write(a[i, j]: 4); end; writeln; end; for i: =1 to n do begin ss: =0; for j: =1 to n do ss: =ss+a[i, j]; s[i]: =ss; end; writeln; for i: =1 to n do write(s[i]: 4); writeln; end.

2. Заменить все элементы двухмерного массива А целых чисел, Которые меньше среднего арифметического первого 2. Заменить все элементы двухмерного массива А целых чисел, Которые меньше среднего арифметического первого столбца, Квадратами этих элементов. Const n=5; Var a: array[1. . n, 1. . n] of integer; i, j, s: integer; sr: real; Begin randomize; for i: =1 to n do begin for j: =1 to n do begin a[i, j]: =random(20); write(a[i, j]: 4); end; writeln; end; s: =0; for i: =1 to n do s: =s+a[ i, 1]; sr: =s/n; for i: =1 to n do for j: =1 to n do if a[i, j] < sr then a[ i, j] : =sqr(a[ i , j ] ); writeln; for i: =1 to n do begin for j: =1 to n do write(s[i]: 4); writeln; end. Задание массива Нахождение суммы элементов первого столбца и среднего арифметического Формирование нового массива по заданному правилу Вывод на экран элементов массива

Задание 4. Решите самостоятельно: 1. Выведите на экран таблицу Пифагора 2. Найдите сумму положительных Задание 4. Решите самостоятельно: 1. Выведите на экран таблицу Пифагора 2. Найдите сумму положительных элементов указанного столбца матрицы А 5, 5 3. Найдите максимальную сумму абсолютных значений элементов по строкам и номер строки с такой суммой. 4. В массиве заданны целые числа. Верно ли, что сумма элементов побочной диагонали массива оканчивается цифрой 0? 5. В поезде 18 вагонов, в каждом из которых 36 мест. Информация о проданных на поезд билетах хранится в двумерном массиве, номера строк которого соответствуют номерам вагонов, а номера столбцов – номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае – 0. Составить программу, определяющую число свободных мест в любом из вагонов поезда.