4.2.3. Обработка массива

Действия с двумерными массивами

Условимся, что массив а состоит из n строк и m столбцов.

• Суммирование элементов каждой строки.

Результатом является массив с именем d, состоящий из n сумм элементов строк:

for i:=l to n do
    begin
        s:=0;
        for j:=l to m do s:=s+a[i,j] ;
        d[i]:=s;
end;

Аналогично вычисляется сумма в столбцах, для этого внешний цикл необходимо сделать по переменной j (номер столбца), а внутренний — по i (номер в строке).

• Поиск минимального элемента всей матрицы.

Переменная min используется для хранения значения минимального элемента, k — номер строки, l — номер столбца, где он находится:

min:=a[1,1]; k:=1; l:=1;
for i:=1 to n do
    for j:=1 to m do
      if min>a[i,j] then
        begin
            min:=a[i,j];
            k:=i; l:=j;
        end;

• Умножение матрицы а на вектор x, в результате получается новый вектор у:

for i:=l to n do
    begin
      s:=0;
      for j:=1 to m do
        s:=s+a[i,j]*x[j];
      y[i]:=s;
    end;

Листинг 4.3 содержит программу, которая вводит с клавиатуры квадратный массив целых чисел по строкам и формирует два вектора. В первый записываются элементы исходного массива, расположенные на главной диагонали и выше, а во второй — элементы, лежащие ниже главной диагонали. Предусмотрен вывод на экран.

Главную диагональ массива образуют элементы, у которых номер строки равен номеру столбца: a11, а22, ..., аnn.

Листинг 4.3. Выделение элементов массива относительно главной диагонали

uses crt;
const row=3; { количество строк }
  col=row; { количество столбцов }
var a: array[1..row,1..col]of integer;
  b,c: array[1..row*col]of integer;
  i,j,n,m: integer;
begin
clrscr; writeln('Введите массив по строкам');
for i:=l to row do
  begin
    write('строка № ',i,' ') ;
    for j:=l to col do read(a[i,j]);
    readln;
  end;
n:=0; ( количество элементов на главной диагонали и выше }
m:=0; { количество элементов ниже главной диагонали }
for i:= 1 to row do
  for j : = 1 to col do
    if j>=i then { элемент стоит на главной диагонали и выше }
      begin
       n:=n+1; { найден еще один элемент }
        b[n]:=а[i,j];{ сохранить в массив b под номером n }
      end
    else { элемент расположен ниже главной диагонали }
      begin
        m:=m+1; { найден еще один элемент }
        c[m] :=a[i,j];{ сохранить в массив с под номером m }
      end;
  writeln('Элементы на главной диагонали и выше:');
  for i:= 1 to n do write(b[i],' '); writeln;
  writeln('Элементы ниже главной диагонали:');
  for i:= 1 to m do write(с[i],' '); writeln; readln;
end.

 предыдущая         меню        вверх         следующая

Hosted by uCoz