Вычислить суммы столбцов матриц - Free Pascal
Формулировка задачи:
Даны матрицы А(4,5), В(5,3), С(2,6) - вводятся с клавиатуры.
Для каждой матрицы вычислить суммы столбцов. Ввод матрицы, вычисление сумм столбцов, вывод вектора оформить как отдельные подпрограммы.
Решение задачи: «Вычислить суммы столбцов матриц»
textual
Листинг программы
const
W=8;
type
TVector = array of Integer;
TMatrix = array of array of Integer;
procedure mRead(var m: TMatrix);
var i, j: Integer;
begin
for i:=0 to High(m) do for j:=0 to High(m[High(m)]) do
{$IFDEF TEST}m[i,j]:=Random(10);{$ELSE}Read(m[i,j]);{$ENDIF}
end;
procedure mWrite(const m: TMatrix);
var i, j: Integer;
begin
for i:=0 to High(m) do begin
for j:=0 to High(m[High(m)]) do Write(m[i,j]:W); WriteLn;
end;
end;
procedure vWrite(const v: TVector);
var j: Integer;
begin
for j:=0 to High(v) do Write(v[j]:W); WriteLn;
end;
procedure mSumByCol(const m: TMatrix; var v: TVector);
var i, j: Integer;
begin
SetLength(v,High(m[High(m)])+1);
for j:=0 to High(m[High(m)]) do begin
v[j]:=0; for i:=0 to High(m) do v[j]:=v[j]+m[i,j];
end;
end;
var
a, b, c: TMatrix;
sa, sb, sc: TVector;
begin
Randomize;
SetLength(a,4,5); SetLength(b,5,3); SetLength(c,2,6);
WriteLn('Введите матрицу A(',High(a),',',High(a[High(a)]),'):'); mRead(a);
WriteLn('Введите матрицу B(',High(b),',',High(b[High(b)]),'):'); mRead(b);
WriteLn('Введите матрицу C(',High(c),',',High(c[High(c)]),'):'); mRead(c);
mSumByCol(a,sa); mSumByCol(b,sb); mSumByCol(c,sc);
WriteLn('A='); mWrite(a); WriteLn('Сумма по столбцам:'); vWrite(sa);
WriteLn('B='); mWrite(b); WriteLn('Сумма по столбцам:'); vWrite(sb);
WriteLn('C='); mWrite(c); WriteLn('Сумма по столбцам:'); vWrite(sc);
end.
Объяснение кода листинга программы
- В начале кода определены константы и типы данных:
- W - размерность ячейки матрицы (в данном случае 8);
- TVector - тип вектора (массив целых чисел);
- TMatrix - тип матрицы (массив массивов целых чисел).
- Далее идут процедуры для чтения и записи матрицы и вектора:
- mRead - считывает значения ячеек матрицы из файла или с клавиатуры;
- mWrite - записывает значения ячеек матрицы в файл или на экран;
- vWrite - записывает значения вектора на экран.
- Следующая процедура mSumByCol вычисляет сумму элементов каждого столбца матрицы и сохраняет результаты в векторе:
- Для каждого столбца создается новый вектор;
- В цикле перебираются все элементы столбца;
- Сумма элементов сохраняется в соответствующем элементе вектора.
- В основной части кода определены и инициализированы три матрицы a, b, c и три вектора sa, sb, sc для хранения сумм столбцов.
- В цикле запрашивается ввод трех матриц с помощью процедуры mRead и выводится на экран.
- Затем вызывается процедура mSumByCol для каждой матрицы, чтобы вычислить сумму элементов каждого столбца.
- Результаты вычислений выводятся на экран с помощью процедур mWrite и vWrite.