Екі өлшемді массив (матрица)
Массив бір өлшемді (сызықтық), екі өлшемді (матрица), жалпы алғанда n өлшемді болады. n жолдан, m бағаннан тұратын екі өлшемді массив былайша сипаттайды:
Var массив аты: array [1..n, 1..m] of элемент типі;
Матрица элементтерін енгізу циклінің жалпы түрі:
for i:=1 to n do begin
for j:=1 to m do
read (a [i, j]); readln;end;
Матрица элементтерінің қалпын сақтап экранға шығару циклінің жазуының үлгісі:
for i:=1 to n do
begin
for j:=1 to m do
write (a [i, j]); writeln;
end;
Мысал53. Матрицаның жұп және тақ элементтерінің санын табыңдар.
Program Matrix1;
Const n=3; m=2;
Var a: array [1..3, 1..2] of integer;
i, k, l: integer; k-жұп, l-тақ элемент саны
begin
for i:=1 to n do
for j:=1 to m do
begin
read (a[i, j ]);
if (a[i, j ]) mod 2=0 then k:=k+1 else l:=l+1;
end;
writeln ('жұп элемент саны=', к, 'тақ элемент саны=', l)
end.
Мысал54. Кездейсоқ бүтін сандармен толтырылған Х(3х4) матрицаның жолдарындағы элементтердің қосындысын табыңдар.
Program Matrix2;
Var X: array [1..3, 1..4] of integer;
i, j, a, b, S: integer;
begin
writeln (' сандар аралығын енгіз'); read (a, b);
randomize;
for i:=1 to 3 do
for j:=1 to 4 do
x[i, j]:=random (b-a) +a;
for i:=1 to 3 do
begin
S:=0;
for i:=1 to 4 do
S:=S+X [i, j];
writeln ('S[',i,']=', S)
end
end.
Мысал55. Квадрат матрицаның (жол және баған сандары тең матрица) негізгі диагоналындағы теріс элементтердің көбейтіндісін және қосалқы диагоналындағы тақ элементтердің санын табыңдар.
Program Matrix3;
Var a: array [1..3, 1..3] of integer;
i, j, p, k:integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
readln (a [i, j]);
P:=1;
for i:=1 to 3 do
for j:=1 to 3 do
begin
if (i=j) and (a [i, j] <0) then P:=P*a [i, j];
if (i+j =4) and (a [i, j] mod 2=1) then k:=k+1;
end;
writeln ('P=', P, 'k=', k)
end.
Жаттығудағы i=j шарты квадрат матрицаның негізгі диагональ элементтерінің, i+j =4 жетекші диагональ элементтерінің шарты. (жалпы жағдайда i+j =n+1, мұндағы n- квадрат матрицаның жолдарының ( немесе баған) саны.)
Мысал56. Кездейсоқ бүтін сандармен толтырылған A(5х5) квадрат матрицаның негізгі диагоналындағы ең үлкен, қосалқы диагоналындағы ең кіші элементтерді табыңдар.
Program Matrix2;
Var A: array [1..5, 1..5] of integer;
i, j, max, min: integer;
begin
randomize;
for i:=1 to 5 do
for j:=1 to 5 do
A[i, j]:=random (20);
max:=A[1,1]; min:=A[1,1];
for i:=1 to 5 do
for j:=1 to 5 do begin
if (i=j) and (max
if (i+j =6) and (min>A [i, j] ) then min:=A [i, j] ; end;
writeln ('max=', max, 'min=', min) end.
Мысал57. A (N x N) квадрат матрицаны транспонирлеу программасын жазыңдар. (Транспонирлеу- матрица жолдарын бағандармен және керісінше алмастыру).
Мысалы: А матрицасы болса, оған транспонирленген матрица түрінде болады. if (i+j =4) and (a [i, j] mod 2=1) then k:=k+1; if (i+j =4) and (a [i, j] mod 2=1) then k:=k+1;
Program Matrix4;
const m=3; n=3;
var A, B:array [1..n, 1..m] of integer;
i, j:integer;
begin
for i:=1 to n do begin
for j:=1 to m do
read (A i, j); readln; end;
for i:=1 to n do
for j:=1 to m do
B i, j:=A j, i];
for i:=1 to n do begin
for j:=1 to m do
write (B i, j); writeln end
end.
Мысал58. Матрицаның жұп элементтерінің арифметикалық ортасын табыңдар.
Program Matrix1;
Const n=3; m=2;
Var a: array [1..3, 1..2] of integer;
i, S,k, P : integer;
begin
for i:=1 to n do for j:=1 to m do begin read (a[i, j]);
if a[i, j ] mod 2=0 then begin S:=S+a[i,j]; k:=k+1; end;
end; P:=S/k;
writeln ('Жұп элементтердің арифметикалық ортасы=', P);
end.
Достарыңызбен бөлісу: |