Двумерные массивы. Двумерный массив При решении практических задач часто приходится иметь дело с различными таблицами данных, математическим эквивалентом.

Презентация:



Advertisements
Похожие презентации
Одномерные массивы. Одномерный массив Статический массив – упорядоченная последовательность фиксированного количества переменных одного типа, имеющая.
Advertisements

Матрицы 1. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
1 Программирование на языке Паскаль Матрицы. 2 Задача: запомнить положение фигур на шахматной доске abcdefgh
const n=10; var a:array[1..n] of integer; i,j,c,b,k:integer; begin randomize; for i:=1 to n do begin a[i]:=random(11)-5;write(a[i]:5) end;writeln;
Массивы – структурированный тип данных, состоящий из фиксированного числа элементов одинакового типа, имеющих общее имя. Массив.
Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5] Двумерный массив можно представить.
Двумерные массивы. Заполнение и вывод элементов. Понятие. Двумерный массив – это массив с двумя измерениями (прямоугольные таблицы, матрицы). Пример:
1 Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений,
Индекс – величина, характеризующая положение элемента, относительно начала массива. МАССИВЫ Конечная, упорядоченная по номерам совокупность значений, объединенных.
Тема: «Понятие квадратная матрица» :17:47.
Двумерным массивом называется совокупность данных, каждое значение которых, зависит от его положения в строке и в столбце.
Программирование на языке Паскаль Часть II Матрицы.
Одномерные массивы Решение задач. Табличный способ организации данных Одномерные и двумерные массивы.
Работа с массивами Программирование в ЕГЭ. Что надо знать о массивах? Матрица – двумерный массив. Элементы массива могут иметь любой тип. Массив определяют.
Тема: « Вставка- удаление элементов массива » :18:06.
Шутилина Л.А., A[1,1]A[1,2]A[1,3]A[1,4]A[1,5] A[2,1]A[2,2]A[2,3]A[2,4]A[2,5] A[3,1]A[3,2]A[3,3]A[3,4]A[3,5] A[4,1]A[4,2]A[4,3]A[4,4]A[4,5]
Язык программирования Pascal Массивы А. Жидков. Массивы Массив – поименованный набор однотипных элементов, каждый из которых имеет свой номер, (индекс).
Матрицы Матрицей называется таблица n * m (n строк, m столбцов). Пример. Матрица 3 * 3 имеет вид а 11 а 12 а 13 а 21 а 22 а 23 а 31 а 32 а 33 Элемент матрицы.
Двумерные массивы. Задачи обработки двумерных массивов.
Транксрипт:

Двумерные массивы

Двумерный массив При решении практических задач часто приходится иметь дело с различными таблицами данных, математическим эквивалентом которых служат матрицы. Такой способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется двумерным массивом (матрицей) или таблицей. Их можно занести в память компьютера, используя понятие двумерного массива. Положение элемента в массиве определяется двумя индексами. Они показывают номер строки и номер столбца. Например: A[7,6], D[56,47]. 2

Пример объявления двумерного массива Организацию обработки элементов статического двумерного (многомерного) массива можно организовать с использованием сложно циклической структуры. Так как, например, при заполнении массива необходимо произвести обход всех элементов по строкам ( i ) изменяя индексы столбцов ( j ). Таким образом объявленный массив из N строк и M столбцов Const n=6; m=8; Var a : array [1..n, 1..m] of integer; будет организован в памяти ЭВМ следующим образом: 3

Ввод – вывод элементов двумерного массива Constn=6;m=8;Var a : array [1..n, 1..m] of integer; I, j : integer; Begin writeln ( Заполнение элементов целочисленного массива A[6,8] ); for i:=1 to n do for j:=1 to m do for j:=1 to m dobegin write (a[, i,,, j, ] =); read (a[ i, j ]); end; writeln (В памяти компьютера сформирован двумерный массив с элементами); for i:=1 to n do begin for j:=1 to m do for j:=1 to m do write (a[ i, j ]:6); writeln;endEnd. начало Aij A[6,8] конец Aij 4

Ввод – вывод элементов двумерного массива Генерация элементов двумерного массива случайными числами. Constn=6;m=8;Var a : array [1..n, 1..m] of integer; I, j : integer; Beginrandomize; for i:=1 to n do begin for j:=1 to m do for j:=1 to m dobegin a[ i, j ]:=random(101); write (a[ i, j ]:6); end;writeln;endEnd. начало Aij A[6,8] конец 5

Квадратные матрицы В квадратной матрице количество строк и столбцов - одинаково и равно n. Любая квадратная матрица имеет элементы главной и побочной диагонали. Диагональные элементы главной диагонали : a[1, 1];a[2, 2];a[3, 3];….;a[n, n]. a[1, 1];a[2, 2];a[3, 3];….;a[n, n]. Элементами побочной диагонали являются : a[1, n];a[2, n-1];a[3, n-2];…;a[n-1, 2];a[n, 1]. 6

Квадратные матрицы В качестве примера рассмотрим задачу формирования квадратной матрицы порядка n случайными числами и нахождения произведения элементов главной диагонали и суммы элементов ниже побочной диагонали. Отметим элементы главной диагонали для нахождения их произведения. 7

Квадратные матрицы И элементы ниже побочной диагонали для поиска их суммы. 8

Квадратные матрицы Const n=9; Var a : array [1..n, 1..n] of integer; I, j, s, p : integer; Beginrandomize; for i:=1 to n do begin for j:=1 to n do for j:=1 to n dobegin a[ i, j ]:=random(101); write (a[ i, j ]:6); end;writeln;endp:=1; for i:=1 to n do p:=p*a[ i, i ]; s:=0; for i:=2 to n do for j:=n-i+2 to n do s:=s+a[ i, j ]; writeln (p,s); End. 9

Транспонирование матриц В данном алгоритме транспонирования матрицы необходимо заменить строки матрицы ее столбцами, а столбцы - строками, т.е. вычислить b[ i,j ] :=a[ j,i ], где i=1,…,n; j=1,…,m. b[ i,j ] :=a[ j,i ], где i=1,…,n; j=1,…,m. Матрица АМатрица B Матрица АМатрица B

Транспонирование матриц Constn=5;m=7;Var i, j : integer; a : array [1..n,1..m] of integer; b : array [1..m,1..n] of integer; Beginrandomize; writeln (Сформирована матрица A); for i:=1 to n do begin for j:=1 to m do begin a[ i,j ]:=random(31)-15; write (a[ i,j ]:6); end;writeln();end; for i:=1 to n do for j:=1 to m do b[ j,i ]:=a[ i,j ]; writeln (Получена транспонированная матрица B); for i:=1 to m do begin begin for j:=1 to n do write(b[ i,j ]:6); writeln(); end;End. 11

Транспонирование матриц Транспонированную матрицу можно получить в исходном массива А. Для квадратной матрицы n*n для этого необходимо поменять местами каждый элемент верхнего треугольника с соответствующим элементом нижнего (диагональные элементы переставлять не нужно). При этом для каждой строки нужно выполнять перестановку для элементов, расположенных правее главной диагонали, с элементами соответствующего столбца, расположенными ниже главной диагонали. При перестановке используем вспомогательную переменную tmp, помещая в нее для временного хранения один из переставляемых элементов, чтобы не потерять его значение. 12

Транспонирование матриц Constn=9;Var i, j, tmp : integer; a : array [1..n,1..n] of integer; Beginrandomize; writeln (Сформирована квадратная матрица A); for i:=1 to n do begin for j:=1 to n do begin a[ i,j ]:=random(101)-50; write (a[ i,j ]:6); end;writeln();end; for i:=1 to n-1 do for j:=i+1 to n do begin tmp:=a[ i,j ]; a[ i,j ]:=a[ j,i ]; a[ j,i ]:=tmp; end; writeln (Получена транспонированная матрица ); for i:=1 to n do begin begin for j:=1 to n do write(a[ i,j ]:6); writeln(); end;End. 13

Удаление строки матрицы Алгоритм удаления строки является сходным с алгоритмом удаление элементов одномерного массива, за тем исключением, что операция переноса элементов выполняется для каждого столбца при переборе строк. Рассмотрим программу удаления из матрицы А заданной с клавиатуры строки T. Constn=10; m=5; Var i, j, t, n : integer; a : array [1..n,1..m] of integer; Beginrandomize; writeln (Сформирована матрица A); for i:=1 to n do begin for j:=1 to m do begin a[ i,j ]:=random(101)-50; a[ i,j ]:=random(101)-50; write (a[ i,j ]:6); write (a[ i,j ]:6);end;writeln;end; writeln (Введите номер строки для удаления); readln (t); 14

Удаление строки матрицы k:=n-1; for i:=t to k do for j:=1 to m do a[ i,j ]=a[ i+1,j ]; a[ i,j ]=a[ i+1,j ]; writeln (Получена матрица ); for i:=1 to k do begin for j:=1 to m do write (a[ i,j ]); writeln;endEnd. 15

Включение столбца в матрицу Алгоритм включения столбца в матрицу является сходным с алгоритмом включения элементов одномерного массива, за тем исключением, что операция переноса элементов выполняется для каждой строки при переборе столбцов. Рассмотрим пример, где необходимо в квадратной матрице А вставить столбец, содержащий ее элементы главной диагонали - следующим за столбцом, содержащим минимальный элемент матрицы. Для этого перепишем диагональные элементы в массив B, найдем минимальный элемент и его индекс по столбцу. Перебирая столбцы, сдвинем все столбцы на позицию вправо начиная от найденного индекса столбца минимального элемента. Занесем в следующий столбец за индексом минимального элемента - элементы столбца, которые хранятся в массиве B. 16

Включение столбца в матрицу Const n=7; Var i, j, min, j_min, m: integer; a : array [1..n,1..n+1] of integer; b : array [1..n] of integer; Beginrandomize; writeln (Сформирована матрица A); for i:=1 to n do begin for j:=1 to n do begin a[ i,j ]:=random(101); write (a[ i,j ]:6); end; b[ i ]:=a[ i,i ]; writeln; end; min:=a[1,1]; j_min:=1; for i:=1 to n do for j:=1 to n do if (a[ i,j ]

Решите задачи: Создайте квадратную матрицу размерности 5 случайными числами в диапазоне [-5;5] и найдите: сумму элементов строки номер которой введен с клавиатуры; сумму элементов главной диагонали; произведение элементов выше побочной диагонали; максимальный и минимальный элемент массива. 18