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.
===== PascalABC.NET =====
function GCD(a, b: integer): integer;// НОД
begin
while b <> 0 do
begin
a := a mod b;
Swap(a, b)
end;
Result := a
end;
procedure RedFrac(var a, b: integer);// сокращение дроби
begin
var sgna := Sign(a); // мы должны учитывать знак!
var sgnb := Sign(b); // мы должны учитывать знак!
a := Abs(a);
b := Abs(b);
var d := GCD(a, b);
a := (a div d) * sgna;
b := (b div d) * sgnb
end;
begin
var (p1, q1) :=
ReadInteger2('Дробь 1. Введите числитель и знаменатель:');
var (p2, q2) :=
ReadInteger2('Дробь 2. Введите числитель и знаменатель:');
var p3 := p1 * q1 + p2 * q2;
var q3 := q1 * q2;
RedFrac(p3, q3);
Println(p3, '/', q3)
end.