Program Labor2; uses crt; var A,A4:text; B,B4:text; f:text; MatrA:array[1..7, 1..7] of integer; MatrB:array[1..7,1..7] of integer; TempMatr:array[1..7,1..7] of integer; A1:array[1..7,1..7] of integer; A0:array[1..7,1..7] of integer; A2:array[1..7,1..7] of integer; A3:array[1..7,1..7] of integer; B1:array[1..7,1..7] of integer; BO:array[1..7,1..7] of integer; B2:array[1..7,1..7] of integer; B3:array[1..7,1..7] of integer; C1:array[1..7,1..7] of integer; C2:array[1..7,1..7] of integer; C21:array[1..7,1..7] of integer; C22:array[1..7,1..7] of integer; C3:array[1..7,1..7] of integer; C4:array[1..1,1..7] of integer; i, j , k, x, y, rowa, cola, rowb, colb, sumcl, sumc2, rozbivAX, rozbivAY, rozbivBX,rozbivBY:integer; {Процедура чтения матриц А и В из файлов} procedure ReadAB; Begin Assign(A, 'A.txt'); Reset(A); Assign(B,'B.txt'); Reset(B); {init file} Readln(A); Read(A,rowa); Readln(A); Read(A,cola); Readln(A); Read(A,rozbivAX); Readln(A); Read(A,rozbivAY); Readln(A); {Chtenye MatrixA iz fila} For i:=1 to rowa do Begin For j:=1 to cola do Read(A,matrA[i,j]); Readln(A); End; Close(A); Readln(B); Read(B,rowb); Readln(B); Read(B,colb); Readln(B) ; Read(B,rozbivBX); Readln(B); Read(B,rozbivBY); Readln(B) ; Readln(B); {Chtenye Matrix B iz fila} For i:=1 to rowb do Begin For j:=1 to colb do Read(B,matrB[i,j]); Readln(B); End; Close(B); end; procedure writeMatrA; Begin assign(f,'A.txt'); reset(A); writeln('Matrica A budet pazbita x= ',rozbivAX,'y= ',rozbivAY); for i:=1 to rowa do begin for j:=1 to cola do write (f,MatrA[i,j]); writeln; end; writeln; writeln; End; procedure writeMatrB; Begin assign(f,'B4.txt'); reset(f); writeln('Matrica B budet pazbita x= f,rozbivBX,f y= f,rozbivBY'); for i:=1 to rowb do begin for j:=1 to colb do write (f,MatrB[i,j]); writeln; end; End; {процедура разбиения матрицы A} procedure RozbivMatrixA; begin {Блок получения подматрицы A1} x:=1; y:=1; for i:=1 to rozbivAX do begin for j:=1 to rozbivAY do Begin a1[x,y]:=MatrA[i,j]; inc(y); End; inc(x); end; {Блок получения подматрицы А0} x:=1;y:=1; for i:=1 to rozbivAX do begin for j:=rozbivAY+1 to cola do Begin A0[x,y]:=MatrA[i,j]; inc(y); End; inc(x); end; {Блок получения подматрицы А2} x:=1; y:=1; for i:=rozbivAX+1 to rowa do begin for j:=1 to rozbivAY do Begin A2[x,y]:=MatrA[i,j]; inc(y); End; inc(x); end; {Блок получения подматрицы А3} x:=1; y:=1; for i:=rozbivAX+1 to rowa do begin for j:=rozbivAY+1 to cola do Begin A3[x,y]:=MatrA[i,j]; inc(y); End; inc(x); end; {Блок вывода подматрицы матрицы А} ClrScr; Writeln('podmatrici A'); Writeln('Al'); x:=1; y:=1; for i:=1 to rozbivAX do begin for j:=1 to rozbivAY do Begin write (' ',A1[x,y]); inc(y); End; inc(x); writeln; end; writeln; Writeln('A0'); x:=1; y:=1; for i:=1 to rozbivAX do begin for j:=rozbivAY+1 to cola do Begin write ('',A0[x,y]); inc(y); End; inc(x); writeln; end; writeln; Writeln('A2'); x:=1; y:=1; for i:=rozbivAX+1 to rowa do begin for j:=1 to rozbivAY do Begin write (' ',A2[x,y]); inc(y); End; inc(x); writeln; end; writeln; Writeln('A3'); x:=1; y:=1; for i:=rozbivAX+1 to rowa do begin for j:=rozbivAY+1 to cola do Begin write (' ',A3[x,y]); inc(y); End; inc(x); writeln; end; end; {Процедура разбиения матрицы В} procedure RozbivMatrixB; begin {Блок получения подматрицы В1} x:=1; y:=1; for i:=1 to rozbivBX do begin for j:=1 to rozbivBY do Begin b1[x,y]:=MatrB[i,j]; inc(y); End; inc(x); end; {Блок получения подматрицы В0} x:=1; y:=1; for i:=1 to rozbivBX do begin for j:=rozbivBY+1 to colb do Begin A0[x,y]:=MatrB[i,j]; inc(y); End; inc(x); end; {Блок получения подматрицы В2} x:=1; y:=1; for i:=rozbivBX+1 to rowb do begin for j:=1 to rozbivBY do Begin B2[x,y]:=MatrB[i,j]; inc(y); End; inc(x); end; {Блок получения подматрицы В3} x:=1; y:=1; for i:=rozbivBX+1 to rowb do begin for j:=rozbivBY+1 to colb do Begin B3[x,y]:=MatrB[i,j]; inc(y); End; inc(x); end; {Блок вывода подматриц матрицы В} ClrScr; Writeln(' podmatrici B'); Writeln('B1'); x:=1; y:=1; for i:=1 to rozbivBX do begin for j:=1 to rozbivBY do Begin write (' ',B1[x,y]); inc(y); End; inc(x); writeln; end; writeln; Writeln('B0'); x:=1; y:=1; for i:=1 to rozbivBX do begin for j:=rozbivBY+1 to colb do Begin write (' ',B3[x,y]); inc(y); End; inc(x); writeln; end; writeln; Writeln('B2'); x:=1; y:=1; for i:=rozbivBX+1 to rowb do begin for j:=1 to rozbivBY do Begin write (' ',B2[x,y]); inc(y); End; inc(x); writeln; end; writeln; Writeln('B3'); x:=1; y:=1; for i:=rozbivBX+1 to rowb do begin for j:=rozbivBY+1 to colb do Begin write (' ',B3[x,y]); inc(y); End; inc(x); writeln; end; end; {Блок перемножения подматриц и вывод на экран подматриц матрицы С} procedure peremnogenie; begin sumcl:=0; {C1} for i:=1 to rozbivAX do for j:=1 to rozbivBY do begin for k:=1 to rozbivBX do begin sumcl:=sumcl+ (A1 [i, k] *B1 [k,j]) ; end; C1[i,j]:=sumcl; sumcl:=0; end; {C2} sumcl:=0; for i:=1 to rowa-rozbivAX do for j:=1 to rozbivBY do begin for k:=1 to rozbivBY do begin sumcl :=sumcl+ (A2[i,k] *B1 [k, j] ) ; end; C21[i,j]:=sumcl; sumcl:=0; end; sumc2:=0; for i:=1 to rowa-rozbivAX do for j:=1 to colb-rozbivBX do begin for k:=1 to colb-rozbivBX do begin sumc2:=sumc2+(A3[i,k]*B2 [k, j] ) ; end; C22 [i,j] :=sumc2; sumc2:=0; end; for i:=1 to rowa-rozbivAX do for j:=1 to rozbivBY do C2[i, j]:=C21[i,j]+C22[i,j]; {CO} for i:=1 to 3 do for j:=1 to 3 do C3[i,j]:=0; {C3} sumcl:=0; for i:=1 to rowa-rozbivAX do for j:=1 to rowb-rozbivBY do begin for k:=1 to rowb-rozbivBY do begin sumcl :=sumcl+ (A3 [i, k] *B3 [k, j] ) ; end; C21 [i,j]:=sumcl; sumcl:=0; end; {Вывод матриц C} Clrscr; Writeln ('C1'); for i:=1 to rozbivAX do begin for j:=1 to rozbivBY do write (' ',C1[i,j]); writeln; end; writeln; writeln ('C2'); for i:=1 to rowa-rozbivAX do begin for j:=1 to rozbivBY do write (' ',C2[i,j]); writeln; end; writeln; Writeln('CO'); for i:=1 to 1 do begin for j:=1 to 1 do write (' ',C3[i,j]); writeln; end; writeln; Writeln('C3'); for i:=1 to rowa-rozbivAX do begin for j:=1 to rowb-rozbivBY+1 do write (' ',C4[i,j]); writeln; end; writeln; end; BEGIN clrscr; ReadAB; writeMatrA; writeMatrB; Readln; RozbivMatrixA; readln; RozbivMatrixB; readln; peremnogenie; writeln; writeln; readkey; END.