Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Базовые операции обработки двумерных массивов




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

Для того чтобы в программе использовать элемент двумерного массива, надо выполнить операцию индексирования [ ]. Указываются: имя массива и индексы в квадратных скобках. Первый индекс это номер строки, второй – номер столбца, в которых находится элемент. Между индексами ставится запятая.

 

имя [индекс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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...