Ora de info: Matrice

Matrice


Ce este o matrice? In principiu o matrice e o multime de numere aranjate pe linii si coloane, dar fara linii intre ele care sa le desparte. Seamana foarte mult cu un tabel.

Ex:


1   2   3   4   5
6   7  8   9  10
11 12 13 1415
16 17 18 1920


In informatica o matrice e o multime de elemente de acelasi tip (integer sau real) aranjate pe linii si coloane.
Ca si la Vectori o matrice se declara astfel:

Var a: array[1..10,1..15] of ‘tip’
 unde cifra 10 reprezinta numarul maxim de linii iar cifra 15 numarul maxim de coloane in matricea a!
Cum arataun element al matricei intro problema TURBO PASCAL?
Ceva degenul asta:  ‘a[i,j]’ care este elemental matricei ‘a’ aflata pe linia ‘i’ si coloana ’j’.
De exemplu alegem cifra 8 din matricea de mai jos. In limbajul pascal cifra 8 va fi afisata astfel:
a[2,3]=8 unde 2 va fi a doua linie si 3 coloana a treia.

1   2   3   4  5
6   7  8   9 10
11 12 13 1415
16 17 18 1920

Alt exempluin care alegem cifra 10 care va fi: a[2,5]=10

1   2   3   4  5
6   7  8   9 10
11 12 13 1415
16 17 18 1920



Citirea unei matrice
Citirea unei matrice se realizeaza cu ajutorul a doua structuri FOR (un FOR pentru variabila ‘i’-linia si alt FOR pentru variabila ‘j’-coloana.

EXEMPLU:
For i:=1 ton do
For j:=1 tom do
readln(a[i,j]);

Exemplu de problema: Calculati suma elementelor impare dintr-o matrice.

Program matrice_1;
Var a:array[1..10, 1..10] of integer;
Var m,n,I,j,S: integer;
Begin
Write(‘n’);  readln(n);
Write(‘m’) ;   readln(m);
{Variabilele ‘n’ si ‘m’ reprezinta numarul maxim (pe care il poate lua respectiv variabilele ‘i’ si ‘j’ in structurile FOR)  de liniisi coloane}
For i:=1 to n do
For j:=1 to m do
Begin
Write(‘a[‘,i,’,’,j,’]=’);

{aici e utilizata o forma frumoasa de afisare a mesajului care la executareaprogramului va arata astfel: a[4,2]=17 si nu a[i,j]=17. ATENTIE LA PUNCTUATIE!!!
1   2   3     4   5
6   7  8    9   10
11 12 13 1415
16 17 18 1920
}

Readln(a[i,j];
End;
S:=0;
{Mai jos observam repetarea celor doua structuri FOR, si mai observam ca ele sunt la fel! Nu se modifica nimic}
For i:=1 to n do
For j:=1 to m do
If a[i,j] mod 2=0 then S:=S+a[i,j];
Writeln(‘S=’,S);
End.

Alt exemplu de problema: Calculati Produsul elementelor a unei matrice mai mare ca 10 aflate pe coloane pare si linii impare.

Program matrice_2;
Vara:array[1..10, 1..10] of integer;
    N,m,I,j,P:integer;
Begin
Write(‘n=’);   readln(n);
Write(‘m’);   readln(m);
For i:=1 to n do
For j:=1 to m do
Begin
Write(‘a[‘,i,’,’,j,’]=’);
Readln(a[i,j]);
End;
P:=1;
For i:=1 to n do
For j:=1 to m do
{O instructiune mai complexa}
If(a[I,j]>10) and (I mod 2<>0) and (j mod 2=0)
Then P:=P*a[I,j];
Write(‘P=’,P);
End.


Intrebari? Nelamuriri? Nu ezitati sa postati un comentariu mai jos!
  

Niciun comentariu:

Trimiteți un comentariu