Базовые операции обработки двумерных массивов
⇐ ПредыдущаяСтр 2 из 2 Двумя простейшими операциями над элементами двумерного массива является выбор определенного элемента и изменение его значения. Для того чтобы в программе использовать элемент двумерного массива, надо выполнить операцию индексирования [ ]. Указываются: имя массива и индексы в квадратных скобках. Первый индекс это номер строки, второй – номер столбца, в которых находится элемент. Между индексами ставится запятая.
имя [индекс1, индекс2]
Как индекс можно использовать константу, переменную или выражение порядкового типа. Например, а[2,3] – элемент второй строки третьего столбца матрицы а.
Изменить значение элемента массива можно с помощью операции присваивания: Например:
b[5,1]:=3.2;{Элементу пятой строки первого столбца матрицы b присваивается значение 3.2}
c[4,3]:=’C’;{Элементу четвертой строки третьего столбца матрицы присваивается значение ‘C’}
Изменить значение элемента массива можно с помощью операции ввода данных:
readln(a[1,1]); {В элемент массива a[1,1] считывается новое значение} К элементам двумерных массива можно применять все операции, определенные для базового типа.
Перечень базовых операций над матрицами: § ввод или инициализация матриц; § вывод матриц; § поиск максимального или минимального элемента матрицы; § поиск элемента по определенному критерию; § определить имеет ли матрица (ее один или несколько элементов, строка, столбик) указанное свойство; § выполнение определенных операций над компонентами матриц (перестановка строк и столбцов и т.д.) или над матрицами в целом (умножение матриц и т.д.); § преобразование матрицы нужным способом. ВВОД ИЛИ ИНИЦИАЛИЗАЦИЯ ДВУМЕРНОГО МАССИВА
Двумерный вводится в память машины поэлементно. Для этого необходимое наличие двух циклов, так как изменяется и номер строки и номер столбца. Ввод массива с клавиатуры: program Vvod_matr1; const n=9; m=11; {общее максимальное количество строк и столбиков } var а: array [1..n,1..m] of byte; i, j:byte; {текущие индексы} n1, m1:byte;; { количество строк и столбиков при вводе – реальное} begin writeln('Enter number of rows <=',n); readln(n1); writeln('Enter number of columns <=',m); readln(m1); writeln('Enter matrix a(',n1,'*',m1,')'); {Внешний цикл по строкам} for i:=1 to n1 do {Внутренний цикл по столбцам} for j:=1 to m1 do read(a[i,j]); end.
При вводе массива старайтесь сохранять на экране внешний вид таблицы. Это значит, что после того как вы ввели через пробел три элемента строки, необходимо нажать клавишу Enter и приступить к вводу элементов следующей строки и т.д.
Также для инициализации можно использовать массивы-константы. const b: array [ 1..3, 1..2 ] of byte = ((0, 1), (2, 3), (4,5)); Создать массив можно, с использованием какой-нибудь функции. for i:=1 to n1 do for j:=1 to m1 do a[i,j]:=sqr(i+j);
Вывод двумерного массива Рассмотрим следующий фрагмент программы. for i:=1 to n1 do for j:=1 to m1 do write(a[i,j]:2,' '); Данный пример иллюстрирует вывод двумерного массива в строку через пробел. Такой вариант вывода нарушает структуру таблицы. Поэтому обычно используют способ, когда после вывода полной строки таблицы на экран осуществляется перевод на следующую строку, с использованием процедуры writeln без параметров.
for i:=1 to n1 do begin for j:=1 to m1 do write(a[i,j]:3); writeln end; Пример. program Vvod_matr2; const n=9; m=11; var A:array [1..n,1..m] of byte; i,j:byte; n1,m1:byte; begin writeln('Enter number of rows <=',n); readln(n1); writeln('Enter number of columns <=',m); readln(m1); for i:=1 to n1 do for j:=1 to m1 do a[i,j]:=sqr(i+j); writeln; writeln('Output matrix a(',n1,'*',m1,')'); for i:=1 to n1 do begin for j:=1 to m1 do write(a[i,j]:3); writeln end; readln;readln end. Решим задачу, когда матрицу необходимо получить за заданным алгоритмом. Дано натуральное число n. Создать целочисленную матрицу А порядка m, которая на главной диагонали имеет 1, под ней – 5, над ней – 4.
Розв'язок В математике матрица это прямоугольная таблица, образованная из элементов некоторого множества и составляет с m строк и n столбцов. Если таблица называется прямоугольной матрицей размера . Если матрица называется квадратной, а число m – ее порядком. Рассмотрим эту задачу на примере матрицы . Выучим условия какие присутствуют в этом примере: , , (i – номер строки, j – номер столбца). Равные индексы () имеют элементы главной диагонали. Если (), то элементы расположены над главной диагональю (i изменяется от 1 до 3, j изменяется от 2 до 4). Если (), то элементы расположены под главной диагональю (i изменяется от 2 до 4, j изменяется от 1 до 3).Учитывая эти соображения, запишем формулу для вычисления элемента матрицы program N2; const m=4; var A:array [1..m,1..m] of byte; i,j,n:byte; begin //Создание матрицы по заданному правилу for i:=1 to m do for j:=1 to m do if i=j then A[i,j]:=1 else if i<j then A[i,j]:=4 else A[i,j]:=5; //Вывод матрицы на экран for i:=1 to m do begin for j:=1 to m do write(a[i,j],' '); writeln end; end.
Дана прямоугольная матрица размером 3*4. Найти количество нулевых элементов в каждом столбце матрицы
хотя бы program DM; const m=3; n=4; var a: array [1..m,1..n] of byte; i, j, k: byte; begin writeln('Vvedite matrizu razmerom ',m,'*',n); //Создание матрицы For i:=1 to m do For j:=1 to n do read(a[i,j]); For j:=1 to n do begin k:=0; For i:=1 to m do if A[i,j]=0 then k:=k+1; writeln('v ',j, ' stolbze ',k, ' elementov'); end; readln;readln end. Результат
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|