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