Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program n_1;
- type
- TM = array of array of integer;
- var a, b, c:TM;
- i, L1, S1, L2, S2: integer;
- Procedure dsdjl(ar:TM);//Вывод матрицы
- Var i, j : integer;
- Begin
- For i:=0 to (Length(ar)-1) do
- Begin
- for j:=0 to (Length(ar[0])-1) do
- write(ar[i,j],' ');
- writeln;
- end;
- End;
- Procedure radome(ar:TM; var arr:TM);//Заполнение основных матриц
- Var i, j : integer;
- Begin
- For i:=0 to (Length(ar)-1) do
- Begin
- for j:=0 to (Length(ar[0])-1) do
- ar[i,j]:=random(10)+1;
- writeln;
- end;
- End;
- Function SumArr(ar,br:TM):TM;//Сумма матриц
- Var i, j : integer;
- Sum :TM;
- Begin
- SetLength(Sum, Length(ar));
- for i:=0 to (Length(ar)-1) do
- SetLength(Sum[i], (Length(ar[1])));
- If ((Length(ar))<>(Length(br))) and ((Length(ar[1]))<>(Length(br[1]))) then
- Writeln('Сложение невозможно')
- Else
- begin
- For i:=0 to Length(ar) - 1 do
- for j:=0 to Length(ar[i]) - 1 do
- Sum[i,j]:=ar[i,j] + br[i,j];
- Writeln('Сумма матриц >> ');
- dsdjl(Sum);
- end;
- SumArr:=Sum;
- End;
- Function MultiArr(ar,br:TM):TM;//Умножение матриц
- Var i, j, k, q, s:integer;
- kl:array of integer;
- Multip:TM;
- Begin
- s:=0;
- SetLength(kl, (Length(ar)*Length(br[0])+1));
- SetLength(Multip, Length(ar));//Выделение памяти под новую матрицу
- for i:=0 to (Length(ar)-1) do
- SetLength(Multip[i], (Length(br[0])));
- If (Length(ar[0]))<>(Length(br)) then//Проверка возможности выполнения умножения
- Writeln('Умножение невозможно')
- Else
- begin
- writeln('Умножение матриц >>');
- For i:= 0 to Length(br[0])-1 do
- begin
- For j:=0 to Length(ar)-1 do
- begin
- k:=0;
- for q:=0 to Length(ar)-1 do
- k:=k+ar[i,q]*br[q,j];//Само умножение
- kl[s]:=k;
- s:=s+1;
- Write(k,' ');
- end;
- writeln;
- end;
- end;
- s:=0;
- MultiArr:=Multip;
- End;
- Begin
- Randomize;
- Write('Введите кол-во строк в первой матрице >> ');
- read(L1);
- Write('Введите кол-во столбцов в первой матрице >> ');
- read(S1);
- SetLength(a, L1);
- for i:=0 to (L1-1) do
- SetLength(a[i], S1);
- radome(a, a);
- writeln('Первая матрица:');
- dsdjl(a);
- writeln;
- Write('Введите кол-во строк во второй матрице >> ');
- read(L2);
- Write('Введите кол-во столбцов во второй матрице >> ');
- read(S2);
- SetLength(b, L2);
- for i:=0 to (L2-1) do
- SetLength(b[i], S2);
- radome(b, b);
- writeln('Вторая матрица:');
- dsdjl(b);
- writeln;
- SumArr(a,b);//Вызов сложения матриц
- writeln;
- c:=MultiArr(a,b);//Вызов умножения матриц
- SetLength(c, Length(a));
- for i:=0 to (Length(a)-1) do
- SetLength(c[i], (Length(b[0])));
- // dsdjl(c);
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement