Необходимо написать программу сложения двух матриц произвольной размерности,...

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

Необходимо написать программу сложения двух матриц произвольной размерности, предусмотреть проверку возможности сложения. Программа написана не верно, помогите исправить ошибки.
type mass=array[1..10,1..10] of real;
var
a,b,c:mass;
n,m,i,j,n1,m1:integer;
procedure MatrA (var a:mass);
var
n,m,i,j:integer;
begin
for i:=1 to n do
for j:=1 to m do
writeln('a[',i,',',j,']: ');
readln(a[i,j]);
end;
procedure MatrB (var b:mass);
var
i,j,n1,m1:integer;
begin
for i:=1 to n1 do
for j:=1 to m1 do
writeln('b[',i,',',j,']: ');
readln(b[i,j]);
end;
procedure Sum(a,b,c:mass);
var
i,j,n,m:integer;
begin
for i:=1 to n do
for j:=1 to m do
c[i,j]:=a[i,j]+b[i,j];
end;
begin
writeln('Введите n,m матрицы A');
readln(n,m);
MatrA(a);
writeln('Введите n,m матрицы B');
readln(n1,m1);
MatrB(b);
if (n1<>n) and (m1<>m) then
writeln('Матрицы сложить нельзя');
readln;
Sum(a,b,c);
writeln('A+B');
for i:=1 to n do
begin
for j:=1 to m do
write(c[i,j]:1:3, ' ');
writeln;
end;
readln;
end.


Информатика (16 баллов) | 58 просмотров
0

Матрица произвольной размерности? У Вас размерность матрицы равна двум. Может быть, произвольного размера? Но у Вас он ограничен 10 элементами по каждому измерению... Какая-то формулировака некорректная.

0

*формулировка

Дан 1 ответ
0 голосов

Type
  mass = array[1..10, 1..10] of real;

var
  a, b, c: mass;
  n, m, i, j, n1, m1: integer;

procedure MatrA(var a: mass);
var
  i, j: integer;
begin
  for i := 1 to n do
    for j := 1 to m do
    begin
      writeln('a[', i, ',', j, ']: ');
      readln(a[i, j])
    end
end;

procedure MatrB(var b: mass);
var
  i, j: integer;
begin
  for i := 1 to n1 do
    for j := 1 to m1 do
    begin
      writeln('b[', i, ',', j, ']: ');
      readln(b[i, j])
    end
end;

procedure Sum(a, b: mass; var c: mass);
var
  i, j: integer;
begin
  for i := 1 to n do
    for j := 1 to m do
      c[i, j] := a[i, j] + b[i, j];
end;

begin
  writeln('Введите n,m матрицы A');
  readln(n, m);
  MatrA(a);
  writeln('Введите n,m матрицы B');
  readln(n1, m1);
  MatrB(b);
  if (n1 <> n) and (m1 <> m) then
    writeln('Матрицы сложить нельзя')
  else begin
    Sum(a, b, c);
    writeln('A+B');
    for i := 1 to n do
    begin
      for j := 1 to m do
        write(c[i, j]:1:3, ' ');
      writeln
    end
  end;
  readln;
end.

(142k баллов)