Author Topic:  [RO][INFORMATICA]Matrici  (Read 1748 times)

0 Members and 1 Guest are viewing this topic.

Offline CrystalMD

  • Senior
  • *
  • Posts: 460
  • Reputation: 3
  • Gender: Male
  • Pățăști.
  • Real Name: George
  • Steam ID: CrystalMD
[RO][INFORMATICA]Matrici
« on: 18 October 2015, 18:30:06 »
Tablouri bidimensionale (matrici)

Info:
  • Tablourile bidimensionale funcţionează ca o matrice şi se pot declara astfel:
tip nume_tablou[dim_linie][dim_coloana];
  • La fel ca şi în cazul tablourilor unidimensionale, şi în cazul tablourilor bidimensionale, la declarare, se trece dimensiunea maximă a liniilor (dim_linie) şi dimensiunea maximă a coloanelor (dim_coloana).
  • Compilatorul alocă un spaţiu de memorie egal cu numărul de linii înmulţit cu numărul de coloane ale tabloului, rezervând bineînţeles octeţi în funcţie de tipul de bază al fiecărui tablou.
  • Accesul la fiecare element al tabloului se face prin numele acestuia urmat între paranteze, de indicele liniei şi indicele coloanei (adică poziţia pe care o ocupă în tablou).

Exemplu:
  • Modalităţi de acces la elementele ce pot fi memorate în tablourile bidimensionale declarate anterior:
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.



Follow me on Tumblr!

Offline ActiON_

  • Legend
  • High-Roller
  • *
  • Posts: 3187
  • Reputation: 17
  • Gender: Male
  • Real Name: Cozmiuc Alexandru Andrei
Re: [RO][INFORMATICA]Matrici
« Reply #1 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! :)


Ai vreo problema/nelamurire in legatura cu forumul nostru? Citeste acest topic si daca nu ai gasit raspunsul potrivit, da un reply!

Offline IstuntmanI

  • GZS Owner
  • Administrator
  • Cyborg
  • *
  • Posts: 15119
  • Reputation: 80
  • Gender: Male
  • Real Name: NcF http://fb.me/cnistor96
  • Steam ID: istuntmani
Re: [RO][INFORMATICA]Matrici
« Reply #2 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. :]

Offline CrystalMD

  • Senior
  • *
  • Posts: 460
  • Reputation: 3
  • Gender: Male
  • Pățăști.
  • Real Name: George
  • Steam ID: CrystalMD
Re: [RO][INFORMATICA]Matrici
« Reply #3 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)
« Last Edit: 24 October 2015, 14:24:38 by CrystalMD »



Follow me on Tumblr!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal