Skilled Gaming

Şcoală/School => Şcoală/School => Lecţii/Lessons => Topic started by: CrystalMD on 18 October 2015, 18:30:06

Title: [RO][INFORMATICA]Matrici
Post by: CrystalMD on 18 October 2015, 18:30:06
Tablouri bidimensionale (matrici)

Info:
tip nume_tablou[dim_linie][dim_coloana];

Exemplu:
a[0][0] – reprezintă elementul aflat pe linia 0 coloana 0
a[9][9] - reprezintă elementul aflat pe linia 9 coloana 9

x[ i ][ j ] - reprezintă elementul aflat pe linia i, coloana j în
matrice, unde i şi j pot avea valori între 0 şi 4.

Tips =====>

NV
a[i-1][j-1]
N
a[i-1][j]
NE
a[i-1][j+1]
V
a[ i ][j-1]
a[ i ][ j ]
E
a[ i ][j+1]
SV
a[i+1][j-1]
S
a[i+1][j]
SV
a[i+1][j+1]


Zonele determinate de diagonale:
I. Pe diagonala principală i=j
Sub diagonala principala: i>j
Deasupra diagonalei principale: i<j
II. Pe diagonala secundară j=n-i+1
Sub diagonala secundara: j>n-i+1
Deasupra diagonalei secundare:j<n-i+1

Exercitiu facute de mine:
'umpli' tabloul bidimensional si dupa iti afiseaza un menu in care alegi ce doresti sa faci cu acest tablou. Facut de mine anul trecut) (Sorry nu am avut timp pentru comentarii xD )
Code: [Select]
{ ======================Simple Menu====================== }
Program B10;
var A : array[1..10,1..10] of integer;
    n, m, i, j, met, s, x, y : integer;
    c: char;
begin
     write('Numarul coloanelor si randurilor='); readln(n);
     for i:=1 to n do
         for j:=1 to n do
             readln(A[i,j]);
     for i:=1 to n do
         begin
         for j:=1 to n do
             write(A[i,j]:4);
         writeln;
         end;

     c:='D';
     while upcase(c)='D' do
     begin

     writeln('Alegeti varianta de afisare:');
     writeln('1 - Afisarea sumei tuturor elementelor');
     writeln('2 - Afisarea elementelor pe diagonala principala');
     writeln('3 - Afisarea elementelor pe diagonala secundara');
     writeln('4 - Afisarea elementelor de sub diagonala secundara');
     writeln('5 - Afisarea elementelor de sub diagonala principala si deasuprea diagonalei secundare');
     writeln('6 - Afisarea busolei');

     writeln('========================================================');
     write('Metoda aleasa este '); readln(met);
     if met=1 then
     begin
     s:=0;
     for i:=1 to n do
         for j:=1 to n do
             s:=s+A[i,j];
     writeln('========================================================');
     writeln('Suma elementelor este ',s);
     end
     else if met=2 then
     begin
     writeln('========================================================');
     writeln('Elementele de pe diagonala principala sunt:');
     for i:=1 to n do
         write(A[i,i]:4);
     writeln;
     end
     else if met=3 then
     begin
     writeln('========================================================');
     writeln('Elementele pe diagonala secundara sunt:');
     for i:=1 to n do
         write(A[i,n+1-i]:4);
     writeln;
     end
     else if met=4 then
     begin
     writeln('========================================================');
     writeln('Elementele de sub diagonala secundara sunt:');
     for i:=1 to n do
         begin
         for j:=1 to n do
                begin
                if j>n+1-i then write(A[i,j]:3) else write(' ':3);
                end;
         writeln;
         end;

     end
     else if met=5 then
     begin
     writeln('========================================================');
     writeln('Elementele de sub diagonala principala si deasupra diagonalei secundare sunt:');
     for i:=1 to n do
         begin
         for j:=1 to n do
                begin
                if i>j then if j<n+1-i then write(A[i,j]:3) else write(' ':3);
                end;
         writeln;
         end;

     end
     else if met=6 then
     begin
     writeln('========================================================');
     writeln('Busola, formata pe ',n,' coloane si pe ',n,' randuri:');
     for i:=1 to n do
         begin
         for j:=1 to n do
                begin
                if i=j then write('0':3) else
                if j=n+1-i then write('0':3);
                if i<j then if i+j<n+1 then write('N':3);
                if i>j then if i+j>n+1 then write('S':3);
                if i>j then if i+j<n+1 then write('V':3);
                if i<j then if i+j>n+1 then write('E':3);
                end;
         writeln;
         end;
     end;
     writeln('========================================================');
     write('Din nou?(D/N) : '); readln(c);
     writeln;
     end;
end.
Title: Re: [RO][INFORMATICA]Matrici
Post by: ActiON_ on 22 October 2015, 13:39:36
Ai explicat foarte bine aceasta lectie. De asemenea, topic-ul este bine intocmit. :D

Nu inteleg mare lucru, fiindca e cam greu. :)) Stiu ce ma va astepta si sunt constient de asta.

Multumim! :)
Title: Re: [RO][INFORMATICA]Matrici
Post by: IstuntmanI on 22 October 2015, 13:43:58
Sa inteleg ca-s singurul caruia ii place sa le numeasca Arrayuri 2D. :))

Cod in python... blec.

Asta e o chestie de baza, e nice. :]
Title: Re: [RO][INFORMATICA]Matrici
Post by: CrystalMD on 24 October 2015, 14:23:01
Sa inteleg ca-s singurul caruia ii place sa le numeasca Arrayuri 2D. :))

Cod in python... blec.

Asta e o chestie de baza, e nice. :]
Scoala se limiteaza la 2d, acasa ne putem limita si la 4d :)))
Da e de baza dar si la olimpiezi e esential! :)

Apropo cred ca nici nu avea rost sa pun unidimensionale :)) (1D XD)
SimplePortal 2.3.7 © 2008-2026, SimplePortal