При вводе двумерного массива, также как и одномерного, необходимо разместить его в памяти. При этом необходимо указать размерность массива, исходя из максимально возможного количества строк и столбцов. Перед заполнением массива данными пользователь должен указать действительно необходимые ему количества строк и столбцов, которые обозначим соответственно N и М. Затем начинается непосредственный ввод элементов матрицы. Т.к. матрица состоит из N одномерных массивов (строк), то ввод одной строки следует повторить N раз. Тогда i — номер очередной обрабатываемой строки. Ввод строки с номером i аналогичен вводу элементов одномерного массива. Номер очередного элемента в строке (номер столбца) обозначим переменной j. Тогда очередной обрабатываемый элемент массива, расположенный на пересечении i-й строки и j-ro столбца, обозначается X[i,j]. Блок-схема алгоритма ввода матрицы приведена на рис. 22.
Рис.22
В приведённом алгоритме элементы матрицы обрабатываются по строкам, т.е. переход к следующей строке происходит тогда, когда закончена обработка элементов предыдущей строки.
Для построения алгоритма вывода матрицы воспользуемся аналогичными рассуждениями. Блок-схема алгоритма вывода матрицы приведена на рис. 23.
Рис.23
Фрагмент программы для ввода и вывода матрицы приведён ниже.
Program BC;
const
ROW = 20; {Максимальное количество строк}
COL = 30; {Максимальное количество столбцов}
var
X:array[1..ROW,1..COL] of real;
N,M: integer; {требуемые количества строк и столбцов}
i, j : integer; {индексы строк и столбцов}
BEGIN
write ( ‘Введите количество строк:') ;
read (M) ;
write (‘Введите количество столбцов:') ;
read (N) ;
for i:=1 to N do
for j:=1 to M do
begin
write ('X[' , i , ' , ' , j , ']=');
read(X[i,j]);
end;
writeIn ( ‘Ввод матрицы завершен') ;
………………………………………………………………
……………………………………………………………….
{Вывод матрицы}
writeln(' Матрица X:');
for i:=1 to N do
begin
for j:=1 to M do
write(X [i,j] :6 :2) ;
writeln; {перевод курсора в следующую строку экрана после завершения вывода очередной cтроки матрицы}