Вычислить суммы столбцов матриц - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д