You are on page 1of 29

Податоци од тип дводимензионална

низа

08/15/2022 Гоце Ѓорѓиевски 1


Променливите што добиваат вредности на податоци од типот дводимензионална општа
низа се нарекуваат променливи од тип дводимензионална општа низа или
дводимензионален тип променливи или според индексот двоиндексен тип променливи.

За да се пресмета просечниот успех на еден клас по секој предмет, просечниот успех по


сите предмети, број на ученици со одличен, мн добар, добар, доволен и недоволен
успех, потребно е да се внесат оценките на сите ученици од класот.
Ако во класот има m ученици со n предмети, треба да се воведат mxn
променливи:

Ocena[1]: Ocena[1][1] Ocena[1][2] … Ocena[1][N]


Ocena[2]: Ocena[2][1] Ocena[2][2] … Ocena[2][N]

Ocena[M]: Ocena[M][1] Ocena[M][2] … Ocena[M][N]

Елементите на дводимензионалниот тип на променливи имаат по два


индекси.
08/15/2022 Гоце Ѓорѓиевски 2
Синтаксата на наредбата за декларирање на дводимензионалниот тип
променливи е:

VAR Име: ARRAY[ПочетенИндекс..КраенИндекс] OF


ARRAY[ДругПочетенИндекс..ДругКраенИндекс] OF тип;
Пр. VAR Ocena: ARRAY[1..M] OF ARRAY[1..N] OF integer;

Појаснување на овој тип променливи е шаховска табла која има 8 колони:


A, B, C, D, E, F, G и H. Во секоја колона има по 8 шаховски полиња-редици
со броеви од 1 до 8.
Пр. колоната G има полиња G1, G2, G3, G4, G5, G6, G7 и G8. Секоја
редица е еднодимензионална низа од 8 елементи(8 колони), а секоја
колона е еднодимензионална низа од 8 полиња-редици.
Една димензија се колоните A,B,C,..H, а друга димензија се редиците 1, 2,
3, .., 8. Шаховската табла како дводимензионална променлива може да се
декларира како:
VAR Sah:ARRAY[‘A’..’H’] OF ARRAY[1..8] OF integer;
08/15/2022 Гоце Ѓорѓиевски 3
Елементот A[I] на еднодимензионалната низа има математички запис аi, додека
елементот C[I][J] на дводимензионалната низа има математички запис cij. Иако
овој начин на запишување на индексен тип променливи е природен, во
програмирањето се користи покус начин на запишување.
Синтаксата на декларирање на повеќедимензионален тип променливи е:
VAR Име:ARRAY[ОдИнд1..ДоИнд2,ОдИнд3..ДоИнд4,...,ОдИндM..ДоИндН]
OF тип;

Пр. VAR Ocenki:ARRAY[1..M,1..N] OF integer;


Sah:ARRAY[‘A’..’H’,1..8] OF integer;
T:ARRAY[-10..10,-5..5,0..10] OF real;
На променливите од индексен тип може да им се зададат и почетни вредности.
Пр.
TYPE denovi=(pon,vto,sre,cet,pet,sab,ned);
CONST BrojniOceni:ARRAY[1..5] OF byte=(1,2,3,4,5);
Den:ARRAY[1..7] OF denovi=(pon,vto,sre,cet,pet,sab,ned);
Dama:ARRAY[-1..1,-1..1] OF integer=(0,0,1,1,0,1,1,0,1);
08/15/2022 Гоце Ѓорѓиевски 4
Читање и печатење елементи од дводимензионална низа
 
Бидејќи индексите на елементите се од линеарно подреден тип, читањето и печaтењето
на елементите на дводимензионалната општа низа се врши со некоја од структурите за
повторување.

FOR I:=1 TO N DO
FOR J:=1 TO N DO
BEGIN
Write(‘A[‘,I,’,’,J,’]= ‘ );
ReadLn(A[I,J]);
END;
 

FOR Bukva:=’A’ TO ‘N’ DO


FOR Bukva1:=‘M’ TO ‘Z’ DO
WriteLn(D[Bukva,Bukva1]);
 

FOR I:=-5 TO 5 DO
FOR J:=1 TO N DO
ReadLn(A[I,J]);
08/15/2022 Goce Gjorgjievski 5
Читање и печатење на елементите на дводимензионална општа низа:
Читање по редици:
 
FOR  i:=1 TO  m  DO
      FOR  j:=1 TO  n  DO
            Readln( A[i, j]);
 
Читање по колони:
 
FOR  j:=1 TO  n D
     FOR  i:=1 TO  m DO
            Readln( A[i, j]);
Најпрегледен начин на читање на двоиндексни променливи:
For i:=1 to m do
                         For j:=1 to n do
                        begin
                                    write('A[',i,',',j,']=');
    readln(a[i,j]);
end;
Печатење по редици(кој воедно е и најприменуван начин во програмирањето):
FOR  i:=1 TO  m  DO
    BEGIN
            FOR  j:=1 TO  n  DO
                                    Write( A[i, j]:3);
             Writeln;
   END;

08/15/2022 Гоце Ѓорѓиевски 6


1. Во дводимензионалните полиња првиот индекс ја означува редицата, а вториот индекс
колоната.
Program mnozenje;
Const N=10;
Var I,J:1..N;
T:ARRAY[1..N,1..N] OF integer;
Begin
For I:=1 to N do
For J:=1 to N do
T[I,J]:=I*J;
Writeln(‘Tablicata na mnozenje’:35);
Writeln;
Write(‘’:7);
For I:=1 to N do
Write(I:4);
Writeln;
Writeln;
For I:=1 to N do
Begin
Write(I:5,’’:2);
For J:=1 to N do
Write(T[I][J]:4);
Writeln;
End;
08/15/2022 Гоце Ѓорѓиевски 7
End.
2. Да се вчита и испечати двоиндексна низа-матрица nxn. Потоа да се испечатат членовите
на низата кои се на главната дијагонала кои имаат исти индекси за редиците и колоните (i=j).
Елементите a11, a22, ..., ann  ја сочинуваат главната дијагонала.

PROGRAM matrica;
VAR
 i, j, n : INTEGER;
  X : ARRAY [1..15,1..15] OF INTEGER;
BEGIN
  WRITE('n (kvadratna matrica) =');
  READLN(n);
  WRITELN(‘Vlez na niza');
  FOR i := 1 TO n DO  {vlez}
    FOR j := 1 TO n DO
      BEGIN
        WRITE('X[',i,',',j,']=');
        READLN(X[i,j]);
      END;
  FOR i := 1 TO n DO  {izlez}
    BEGIN
      WRITELN;
      FOR j := 1 TO n DO
        IF i = j THEN
           WRITE(X[i,j]:4);
    END;
END.
08/15/2022 Гоце Ѓорѓиевски 8
3. Вчитај двоиндексна низа mxn. Испечати ги членовите на матрицата со индекси на редици помали од
индексите на колоните (i<j).
PROGRAM matrica1;
VAR
 i, j, n, m: INTEGER;
  X : ARRAY [1..15,1..15] OF INTEGER;
BEGIN
  WRITE('n, m =');
  READLN(n,m);
  FOR i := 1 TO n DO 
    FOR j := 1 TO m DO
      BEGIN
        WRITE('X[',i,',',j,']=');
        READLN(X[i,j]);
      END;
  FOR i := 1 TO n DO
    BEGIN
      WRITELN;
      FOR j := 1 TO m DO
        IF i < j THEN
           WRITE(X[i,j],' ')
        ELSE
           WRITE('  ');
    END;
END.
08/15/2022 Гоце Ѓорѓиевски 9
Задача1: Состави програма со која ќе се пресмета збирот  од елементите на двоиндексната низа од цели броеви Am x n
 S=A11+A12+  ..  +A1n+    ....   +Am1+Am2+..+Amn
Задача2: Состави програма со која ќе се пресмета збирот од елементите на двоиндексната низа An x n по главната
дијагонала
 S=A11+A22+  ..  +Ann
Задача 3: Состави програма со која ќе се пресмeтаат збировите по редици од елементите на двоиндексната низа Am x n
Si=Ai1+Ai2+  ..  +Ain

Задача4: Состави програма со која ќе се определи најмалиот од елементитe на двоиндексната низа Am x n

Задача 5: Состави програма со која ќе се пресмeтаат збирот од елементите на двоиндексната низа Am x n  на p-редицата
и q-колоната
 
Sp=Ap1+Ap2+  ..  +Apn
Sq=A1q+A2q+  ..  +Amq

Задача 6: Да се внесе двоиндексна низа и број a. Потоа секој член да се помножи со а. Новосоздадената низа да се
прикажи како матрица.

Задача 7: Напишете програма која внесува квадратна матрица од ред. n и го испишува производот на елементите на
главната дијагонала.
 
Задача 8: Напишете програма која внесува квадратна матрица од ред n и го испишува збирот на елементите на
споредната дијагонала.

Задача 9: Напишете програма која во дадена матрица nxn, однапред зададен ред m го множи со цел број, а потоа ја
печати матрицата по редици.
Задача 10: Внесете матрица nxn. Напишете ја нејзината транспонирана матрица (i-та редица кај внесената е i-та колона
кај транспонираната) 08/15/2022 Гоце Ѓорѓиевски 10
Program zadaca1_zbirmatrica;
var i,j,n,m,s:integer;
    a:array[1..20,1..20] of integer; 
BEGIN
WriteLn('vnesigi dimenziite na dvoindeksnata niza po redicite i kolonite');
readLn(m,n);
            WriteLn('vnesigi elementite na dvoindeksnata niza po redici');
s:=0;
for i:=1 to m do
                         for j:=1 to n do
                        begin
                                    write('A[',i,',',j,']=');
                                    readln(a[i,j]);
                                     s:=s+a[i,j];
end;
 writeln('dvoindeksnata niza zapisana kako matrica Amxn');
 for i:=1 to m do
             begin
                           for j:=1 to n do
                          write(a[i,j]:3);
             writeln;
            end;
writeln('zbirot od elementite na dvodimenzionalnata niza S=',s:5);
readln;
END.
08/15/2022 Гоце Ѓорѓиевски 11
Program zadaca_glavna_dijagonala;
var i,j,n,s:integer;
    a:array[1..20,1..20] of integer;
BEGIN
WriteLn('vnesigi dimenziite na dvoindeksnata niza po redicite i kolonite');
readLn(n);
            WriteLn('vnesigi elementite na dvoindeksnata niza po redici');
for i:=1 to n do
begin
s:=0;
 for j:=1 to n do
                        begin
                                    write('A[',i,',',j,']=');
                                    readln(a[i,j]);
end;
            s:=s+a[i,i];
 end;
            writeln('dvoindeksnata niza zapisana kako matrica Amxn');
 for i:=1 to n do
            begin
                        for j:=1 to n do
                        write(a[i,j]:3);
                        writeln;
            end;
writeln('zbirot od elementite po glavnata dijagonala na dvodimenzionalnata niza S=',s:5);
readln; 08/15/2022 Гоце Ѓорѓиевски 12
Program zbir_poredica_matrica;
var i,j,n,m:integer;
    a:array[1..20,1..20] of integer;
    s:array[1..20] of integer;
BEGIN
WriteLn('vnesi gi dimenziite na dvoindeksnata niza po redicite i kolonite');
readLn(m,n);
 WriteLn('vnesigi elementite na dvoindeksnata niza po redici');
for i:=1 to m do
                                for j:=1 to n do
                                begin
                                                write('A[',i,',',j,']=');
                                                 readln(a[i,j]);
end;
for i:=1 to m do
begin
                                s[i]:=0;
                                for j:=1 to n do
                                                S[i]:=s[i]+a[i,j];
           end;
                writeln('dvoindeksnata niza zapisana kako matrica Amxn');
                for i:=1 to m do
                begin
                                for j:=1 to n do
 
                                write(a[i,j]:3);
                write(s[i]:3);
                 writeln;
                 end;
readln;
END.

08/15/2022 Гоце Ѓорѓиевски 13


Program zadaca_min_dvoind;
var i,j,n,m,min,k,l:integer;
a:array[1..20,1..20] of integer;
BEGIN
WriteLn('vnesigi dimenziite na dvoindeksnata niza po redicite i kolonite');
readLn(m,n);
                WriteLn('vnesigi elementite na dvoindeksnata niza po redici');
for i:=1 to m do
                                 for j:=1 to n do
                                begin
                                                 write('A[',i,',',j,']=');
                                                readln(a[i,j]);
end;
k:=1;
l:=1;
min:=a[1,1];
for i:=1 to m do
                                 for j:=1 to n do
                                                 if a[i,j] <min   then
                                                begin
                                                                min:=a[i,j];
                                                                k:=i;
                                                                l:=j;
                                                 end;
 writeln('dvoindeksnata niza zapisana kako matrica Amxn');
                for i:=1 to n  do
                 begin
                                for j:=1 to n do
 
                                                write(a[i,j]:3);
                                writeln;
                 end;
                writeln('najmal od  elementite e A[',k,',',l,']=',min);
readln; 08/15/2022 Гоце Ѓорѓиевски 14
Program zbir_poredica_matrica;
var i,j,n,m,p,q,sp,sq:integer;
    a:array[1..20,1..20] of integer;
BEGIN
WriteLn('vnesigi dimenziite na dvoindeksnata niza po redicite i kolonite');
readLn(m,n);
WriteLn('vnesigi ja redicata');
readLn(p);
WriteLn('vnesigi ja kolonata');
readLn(q);
 WriteLn('vnesigi elementite na dvoindeksnata niza po redici');
for i:=1 to m do
                                for j:=1 to n do
                                begin
                                                write('A[',i,',',j,']=');
                                                 readln(a[i,j]);
end;
                sp:=0;
                for j:=1 to n do
                                Sp:=sp+a[p,j];
                 sq:=0;
                for i:=1 to m do
                                Sq:=sq+a[i,q];
                 writeln('dvoindeksnata niza zapisana kako matrica Amxn');
                for i:=1 to m do
                begin
                                for j:=1 to n do
                                write(a[i,j]:3);
                                 writeln;
                 end;
writeln('zbirot na elementite od dvoindeksnata niza vo redicata',p,'iznesuva SP=',sp);
writeln('zbirot na elementite od dvoindeksnata niza vo kplonata',q,'iznesuva SQ=',sq);
readln;
END. 08/15/2022 Гоце Ѓорѓиевски 15
Да се внесе двоиндексна низа и број a. Потоа секој член да се помножи со а. Новосоздадената низа
да се прикажи како матрица.
program mnozi_clen_matrica; for i:=1 to n do
var i,j,n,a:integer; begin
matrica:array[1..10,1..10] of integer; for j:=1 to n do
begin begin
write('Vnesete go redot na matricata: matrica[i,j]:=matrica[i,j]*a;
'); write(matrica[i,j]:4);
readln(n); end;
for i:=1 to n do writeln;
for j:=1 to n do end;
begin end.
write('matrica[',i,',',j,']= ');
readln(matrica[i,j]);
end;
write('Vnesete go a: ');
readln(a);

08/15/2022 Гоце Ѓорѓиевски 16


program proizvod_glavna_dijagonala;
var i,j,n,p:integer;
matrica:array[1..10,1..10] of integer;
begin
write('Vnesete go redot na matricata: ');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('matrica[',i,',',j,']= ');
readln(matrica[i,j]);
end;
p:=1;
for i:=1 to n do
p:=p*matrica[i,i];
writeln('Proizvodot na elementite od glavnata dijagonala e: ',p);
end.

08/15/2022 Гоце Ѓорѓиевски 17


program soberi_sporedna_dijagonala;
var i,j,n,s:integer;
matrica:array[1..10,1..10] of integer;
begin
write('Vnesete go redot na matricata: ');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('matrica[',i,',',j,']= ');
readln(matrica[i,j]);
end;
s:=0;
for i:=1 to n do
inc(s,matrica[n-i+1,i]);
writeln('Zbirot na elementite od sporednata dijagonala e: ',s);
end.

08/15/2022 Гоце Ѓорѓиевски 18


program pomnozired;
var i,j,n,m,mno:integer;
mat:array[1..10,1..10] of integer;
begin
write('Vnesi go n: ');
readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('mat[',i,',',j,']= ');
readln(mat[i,j]);
end;
write('Vnesi go redot m: ');
readln(m);
write('Vnesi go mnozitelot mno: ');
readln(mno);
for i:=1 to n do
mat[m,i]:=mat[m,i]*mno;
for i:=1 to n do
begin
for j:=1 to n do
write(mat[i,j]:5);
writeln;
end;
end.

08/15/2022 Гоце Ѓорѓиевски 19


Напишете програма кој ќе внесува матрица А од ред nxm, природен број k, k<=n и природен број I.
Програмата треба k-тиот ред да го помножи со I и така добиената матрица ја испечати.
program pomnozi_red_matrica;
uses crt;
var i,j,n,m,r,L:integer;
ma:array[1..10,1..10] of integer;
begin
write('Vnesi red na m-cata!');
readln(n,m);
for i:=1 to n do
for j:=1 to m do
begin
write('ma[',i,',',j,']= ');
readln(ma[i,j]);
end;
write('Vnesi koj red ke se mnozi!');
readln(r);
write('Vnesi go mnozitelot!');
readln(L);
for j:=1 to m do
begin
ma[r,j]:=ma[r,j]*L;

end;
for i:=1 to n do
for j:=1 to m do
write('ma[',i,',',j,']= ',ma[i,j],'':2);
readln
end.
08/15/2022 Гоце Ѓорѓиевски 20
08/15/2022 Гоце Ѓорѓиевски 21
Напишете програма кој ќе внесува матрица А од ред nxm, природен број k, k<=m и природен број
I. Програмата треба k-тaта колона да ја сортира по растечки редослед и така добиената матрица ја
испечати.
program sortiraj_kolona_matrica;
uses crt;
var i,j,n,m,k,pom:integer;
ma:array[1..10,1..10] of integer;
begin
write('Vnesi red na m-cata!');
readln(n,m);
for i:=1 to n do
for j:=1 to m do
begin
write('ma[',i,',',j,']= ');
readln(ma[i,j]);
end;
write('Vnesi koja kolona ke se sortira!');
readln(k);
for i:=1 to n-1 do
for j:=i+1 to n do
begin
if ma[i,k]>ma[j,k] then
begin
pom:=ma[i,k];
ma[i,k]:=ma[j,k];
ma[j,k]:=pom;
end;

end;
for i:=1 to n do
begin
for j:=1 to m do
write(ma[i,j]:4,'':2);
writeln;
end;
readln
end.
08/15/2022 Гоце Ѓорѓиевски 22
Напишете програма кој ќе внесува матрица А од ред nxm, два природни броја i, j<=m. Програмата
треба i-тaта колона да ја замени со j-тата колона и така добиената матрица ја испечати.
program zameni_kolona_matrica;
uses crt;
var a,b,n,m,i,j,pom:integer;
ma:array[1..10,1..10] of integer;
begin
write('Vnesi red na m-cata!');
readln(n,m);
for a:=1 to n do
for b:=1 to m do
begin
write('ma[',a,',',b,']= ');
readln(ma[a,b]);
end;
write('Vnesi koi koloni ke se zamenat!');
readln(i,j);
for a:=1 to n do
begin
pom:=ma[a,i];
ma[a,i]:=ma[a,j];
ma[a,j]:=pom;

end;
for a:=1 to n do
begin
for b:=1 to m do
write(ma[a,b]:4,'':2);
writeln;
end;
readln
end.

08/15/2022 Гоце Ѓорѓиевски 23


Напишете програма кој ќе внесува матрица А од ред nxm, два природни броја i, j<=n. Програмата
треба i-тaта редица да ја замени со j-тата редица и така добиената матрица ја испечати.
program zameni_redica_matrica;
uses crt;
var a,b,n,m,i,j,pom:integer;
ma:array[1..10,1..10] of integer;
begin
write('Vnesi red na m-cata!');
readln(n,m);
for a:=1 to n do
for b:=1 to m do
begin
write('ma[',a,',',b,']= ');
readln(ma[a,b]);
end;
write('Vnesi koi redici ke se zamenat!');
readln(i,j);
for a:=1 to m do
begin
pom:=ma[i,a];
ma[i,a]:=ma[j,a];
ma[j,a]:=pom;

end;
for a:=1 to n do
begin
for b:=1 to m do
write(ma[a,b]:4,'':2);
writeln;
end;
readln
end.

08/15/2022 Гоце Ѓорѓиевски 24


Напишете програма кој ќе внесува матрица А од ред nxm, два природни броја i, j<=n. Програмата
треба на i-тaта редица да ја додаде j-тата редица, а j-тата редица остане непроменета и така
добиената матрица ја испечати.
program soberi_redica_matrica;
uses crt;
var a,b,n,m,i,j:integer;
ma:array[1..10,1..10] of integer;
begin
write('Vnesi red na m-cata!');
readln(n,m);
for a:=1 to n do
begin
for b:=1 to m do
begin
write('ma[',a,',',b,']= ');
read(ma[a,b]);
end;
writeln
end;
write('Vnesi koi redici ke se soberat!');
readln(i,j);
for b:=1 to m do
begin
ma[i,b]:=ma[i,b]+ma[j,b];

end;
for a:=1 to n do
begin
for b:=1 to m do
write(ma[a,b]:4,'':2);
writeln;
end;
readln
end. 08/15/2022 Гоце Ѓорѓиевски 25
Напишете програма која ќе внесува матрица од ред nxm. Програмата треба да ја испечати на неа
транспонираната матрица. (Транспонирана матрица од матрицата A се добива така што редиците на
матрицата A станат соодветни колони на транспонираната матрица; општо: i-тата редица на
матрицата е станува i-та колона на транспонираната матрица.)
program transponirana_matrica;
uses crt;
var n,m,i,j:integer;
ma,ma1:array[1..10,1..10] of integer;
begin
clrscr;
write('Vnesi red na m-cata!');
readln(n,m);
for i:=1 to n do
begin
for j:=1 to m do
begin
write('ma[',i,',',j,']= ');
read(ma[i,j]);
end;
writeln
end;
for i:=1 to n do
for j:=1 to m do

ma1[j,i]:=ma[i,j];

for i:=1 to m do
begin
for j:=1 to n do
write(ma1[i,j]:4,'':2);
writeln;
end;
readln;
end.
08/15/2022 Гоце Ѓорѓиевски 26
Да се внесе квадратна матрица од ред n и провери дали е симетрична. (Матрицата A е симетрична ако
важи A[i,j]=A[j,i].)
program simetricna;
uses crt;
var i,j,n,z:integer;
oemuc:array[1..10,1..10] of integer;
begin
clrscr;
write('Vnesi red na matricata!');
readln(n);
z:=0;
for i:=1 to n do
begin
for j:=1 to n do
begin
write('oemuc[',i,',',j,']= ');
readln(oemuc[i,j]);
end;
writeln
end;
for i:=1 to n do
for j:=1 to n do
if oemuc[i,j]<>oemuc[j,i] then
z:=1;
if z=1 then
writeln('Matricata ne e simetricna!')
else
writeln('Matricata e simetricna!');
readln
end. 08/15/2022 Гоце Ѓорѓиевски 27
Да се напише програма која ќе печати двоиндексна низа чии членови ќе бидат Фибоначиеви броеви.
Фибоначиеви броеви се броевите од редот 1, 1, 2, 3, 5, 8, 13, 21, 34,55, 89...

08/15/2022 Гоце Ѓорѓиевски 28


program matrica_fibo;
uses crt;
var
a:array [1..50,1..50] of longint;
i,j,n:integer;
prv, vtor,tret:longint;
begin
prv:=1;
vtor:=1;
write('Vnesete go n!');
readln(n);
for i:=1 to n do
begin
for j:=1 to n do
begin
if ((i=1) and (j=1)) or ((i=1) and (j=2)) then
a[i,j]:=1
else
begin
tret:=vtor+prv;
a[i,j]:=tret;
prv:=vtor;
vtor:=tret;
end;
write (a[i,j]:5,'':2);
end;
writeln;
end;
readln;
end.
08/15/2022 Гоце Ѓорѓиевски 29

You might also like