program umblok; uses crt; type mas=array[1..7,1..7] of real; var l1,kk,w,g,t,SA11,SA12,SA21,SA22,SB11,SB12,SB21,SB22,s:real; r,l,p,i,j,m,n,k,x:integer; a,b,c,d:mas; A11,A12,A21,A22,B11,B12,B21,B22:mas; z1,z2:boolean; c01,c02,c03,c04,c05,c06,c07,c08:mas; c11,c12,c21,c22:mas; t1:text; name1:string; procedure vvod; var tv:text; name:string; begin writeln('BBEDI IMYA FAYLA'); readln(name); assign(tv,name); reset(tv); for i:=1 to m do begin for j:=1 to n do read(tv,a[i,j]); readln(tv); end; readln(tv); for i:=1 to n do begin for j:=1 to k do read(tv,b[i,j]); readln(tv); end; close(tv); end; procedure viv(d:mas;kstrd,kstd:integer); begin for i:=1 to kstrd do begin for j:=1 to kstd do write(t1,d[i,j]); writeln(t1); end; writeln(t1); end; procedure umnog(X,Y:mas;mx,kx,nx:integer;var Z:mas); begin for i:=1 to mx do for j:=1 to kx do begin s:=0; for p:=1 to nx do s:=s+X[i,p]*Y[p,j]; z[i,j]:=s; end; end; procedure viv_c; var t:text; name:string; begin {writeln('BBEDI IMYA FAILA');} readln(name); assign(t,name); append(t); writeln(t,' matrica c:'); writeln(t); for i:=1 to m do begin for j:=1 to k do write(t,c[i,j]:7:2); writeln(t); end; close(t); end; procedure razbien(aa:mas;i1,i2,j1,j2,k,l:integer;var d:mas); begin for i:=i1 to i2 do for j:=j1 to j2 do d[i-k,j-l]:=aa[i,j]; end; procedure vivnaek(x:mas;n1,m1:integer); begin for i:=1 to n1 do begin for j:=1 to m1 do write(x[i,j]:7:1); writeln; end; end; procedure nulmatr(x:mas;n1,m1:integer; var s:real); begin s:=0; for i:=1 to n1 do for j:=1 to m1 do s:=s+x[i,j]; end; begin m:=5; n:=6; k:=7; clrscr; writeln('BBOD ELEMENTOB MATRICI A I B'); vvod; writeln('MATRIX A:'); for i:=1 to m do begin for j:=1 to n do write(' ',a[i,j]:7:1); writeln; end; WRITELN; writeln('MATRIX B:'); for i:=1 to n do begin for j:=1 to k do write(' ',b[i,j]:7:1); writeln; end; for i:=1 to m do for j:=1 to k do c[i,j]:=0; readln; WRITELN; WRITELN('MAKPOBLOKI MATPIX A'); WRITELN; razbien(a,1,2,1,4,0,0,A11); writeln('Blok A1(A11)'); vivnaek(A11,2,4); WRITELN; razbien(a,1,2,5,6,0,4,A12); writeln('Blok A0(A12)'); vivnaek(A12,2,2); WRITELN; razbien(a,3,6,1,4,2,0,A21); writeln('Blok A2(A21)'); vivnaek(A21,3,4); WRITELN; razbien(a,3,6,5,6,2,4,A22); writeln('Blok A3(A22)'); vivnaek(A22,3,2); readln; WRITELN; WRITELN('MAKPOBLOKI MATPIX B'); WRITELN; razbien(b,1,4,1,5,0,0,B11); writeln('BLOK B1(B11)'); vivnaek(B11,4,5); WRITELN; razbien(b,1,4,6,7,0,5,B12); writeln('BLOK B0(B12)'); vivnaek(B12,4,2); WRITELN; razbien(b,5,7,1,5,4,0,B21); writeln('BLOK B2(B21)'); vivnaek(B21,2,5); WRITELN; razbien(b,5,7,6,7,4,5,B22); writeln('BLOK B3(B22)'); vivnaek(B22,2,2); readln; nulmatr(A11,2,4,SA11); {writeln('SA11=',SA11:3:1);} nulmatr(A12,2,2,SA12); {writeln('SA12=',SA12:3:1);} nulmatr(A21,3,4,SA21); {writeln('SA21=',SA21:3:1);} nulmatr(A22,3,2,SA22); {writeln('SA22=',SA22:3:1);} nulmatr(B11,4,5,SB11); {writeln('SB11=',SB11:3:1);} nulmatr(B12,4,2,SB12); {writeln('SB12=',SB12:3:1);} nulmatr(B21,2,5,SB21); {writeln('SB21=',SB21:3:1);} nulmatr(B22,2,2,SB22); {writeln('SB22=',SB22:3:1);} z1:=true; if (SA11<>0) and (SB11<>0) then begin umnog(A11,B11,2,4,5,c01); end; if (z1=true) then begin for i:=1 to 1 do for j:=1 to 5 do c11[i,j]:=c01[i,j]; end; if (z1=true) then begin for i:=1 to 2 do for j:=1 to 5 do c11[i,j]:=c01[i,j]; end; if (z1=true) then begin for i:=1 to 2 do for j:=1 to 5 do c11[i,j]:=c01[i,j]; end; writeln('matrica c11'); vivnaek(c11,2,5); z1:=false; z2:=false; if (SA11<>0) and (SB12<>0) then begin umnog(A11,B12,2,3,4,c03); z1:=true; end; if (SA12<>0) and (SB22<>0) then begin umnog(A12,B22,2,3,3,c04); z2:=true; end; if (z1=true) and (z2=true) then begin for i:=1 to 2 do for j:=1 to 2 do c12[i,j]:=c03[i,j]+c04[i,j]; end; if (z1=true) and (z2=false) then begin for i:=1 to 2 do for j:=1 to 2 do c12[i,j]:=c03[i,j] end; if (z1=false) and (z2=true) then begin for i:=1 to 2 do for j:=1 to 2 do c12[i,j]:=c04[i,j]; end; writeln('matrica c12'); vivnaek(c12,2,2); z1:=false; z2:=false; if (SA21<>0) and (SB11<>0) then begin umnog(A21,B11,3,4,5,c05); z1:=true; end; if (SA22<>0) and (SB21<>0) then begin umnog(A22,B21,3,2,5,c06); z2:=true; end; if (z1=true) and (z2=true) then begin for i:=1 to 3 do for j:=1 to 5 do c21[i,j]:=c05[i,j]+c06[i,j]; end; if (z1=true) and (z2=false) then begin for i:=1 to 3 do for j:=1 to 5 do c21[i,j]:=c05[i,j]+c06[i,j]; end; if (z1=false) and (z2=true) then begin for i:=1 to 3 do for j:=1 to 5 do c21[i,j]:=c05[i,j]+c06[i,j]; end; if (z1=true) and (z2=true) then begin for i:=1 to 3 do for j:=1 to 5 do c21[i,j]:=c05[i,j]+c06[i,j]; end; writeln('matrica c21'); vivnaek(c21,3,5); z1:=false; z2:=false; if (SA22<>0) and (SB22<>0) then begin umnog(A22,B22,3,2,2,c08); z2:=true; end; if (z1=true) and (z2=true) then begin for i:=1 to 3 do for j:=1 to 2 do c22[i,j]:=c08[i,j]; end; if (z1=true) and (z2=false) then begin for i:=1 to 3 do for j:=1 to 2 do c22[i,j]:=c08[i,j]; end; if (z1=false) and (z2=true) then begin for i:=1 to 3 do for j:=1 to 2 do c22[i,j]:=c08[i,j]; end; writeln('matrica c22'); vivnaek(c22,3,2); for i:=1 to 3 do for j:=1 to 5 do begin c[i,j]:=c11[i,j]; c[i+2,j+4]:=c12[i,j]; end; for i:=1 to 3 do for j:=1 to 5 do begin c[i+2,j]:=c21[i,j]; c[i+2,j+5]:=c22[i,j]; end; readln; {writeln('Matrix C'); vivnaek(c,5,7); writeln('vvedi imya faila rezult'); readln(name1); assign(t1,name1); rewrite(t1); writeln('rezult'); writeln(t1,'matrica C11'); viv(C11,2,5); writeln(t1,'matrica C12'); viv(C12,2,2); writeln(t1,'matrica C21'); viv(C21,3,5); writeln(t1,'matrica C22'); viv(C22,3,2); close(t1);} viv_c; readln; end.