Дана матрица(двумерный массив). Посчитать произведения всех положительных элементов в...

0 голосов
41 просмотров

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


Информатика (12 баллов) | 41 просмотров
Дан 1 ответ
0 голосов

Type
  TMatrix = array[,] of integer;
  TVector = array of integer;
var 
  A: TMatrix;
  B: TVector;
  m,n,i,j: integer;
  
procedure CreateMulVector(A:TMatrix; var B: TVector);
var i, j: integer; f: boolean;
begin
  SetLength(B, Length(A, 0));
  for i := 0 to Length(A, 0) - 1 do begin
    B[i] := 1; f := false;
    for j := 0 to Length(A, 1) - 1 do begin
      if A[i,j] > 0 then begin
        f := true;
        B[i] := B[i] * A[i,j];
      end;
    end;
    if not f then B[i] := 0;
  end;
end;


procedure WriteVector(B: TVector);
var i: integer;
begin
  for i := 0 to Length(B) - 1 do 
    write(B[i]:3);
end;


begin
  randomize;
  n := Random(10) + 1;
  m := Random(10) + 1;
  SetLength(A, n, m);
  writeln('Исходная матрица:');
  for i := 0 to n-1 do begin
    for j := 0 to m-1 do begin
      A[i,j] := Random(10) - 5;  
      write(A[i,j]:4);
    end;
    writeln;
  end;
  
  CreateMulVector(A, B);
  writeln('Полученный вектор:');
  WriteVector(B);
end.

(3.8k баллов)