Sunteți pe pagina 1din 8

Tablouri bidimensionale.

Aplicaii
Definire, declarare, prelucrri elementare
Un tablou pentru care la declarare trebuie s specificm dou dimensiuni, iar poziia unui element
este specificat utiliznd doi indici, se numete tablou bidimensional sau matrice.
Primul indice utilizat n referirea unui element este denumit indice de linie, iar cel de al doilea
indice este denumit indice de coloan.
Exemplu: declarm o matrice cu dou linii i trei coloane cu elemente de tip int, pe care o vom
iniializa la declarare.
int a[2][3]={{1,2,3},{4,5,6}};

Putem s ne imaginm matricea astfel:


coloana 0
linia 0
1
linia 1
4

coloana 1
2
5

coloana 2
3
6

Pentru a ne referi la elementul de pe linia 0, coloana 2 din matricea a vom scrie a[0][2].
Citirea unei matrice se realizeaz ca n exemplul de mai jos:
int a[100][100],n,m,i,j;
cin>>n>>m;
for(i=0;i<n; i++)
for(j=0;j<m;j++)
cin>>a[i][j];

Afiarea unei matrice:


for(i=0;i<n; i++)
{
for(j=0;j<m;j++)
cout<<a[i][j]<<' ';
cout<<endl;}

Parcurgerea unei matrice pe linii


S presupunem c trebuie s calculm suma elementelor de pe fiecare linie a matricei:

int s;
for(i=0;i<n; i++)
{
s=0;
for(j=0;j<m;j++)
s=s+a[i][j];
cout<<Suma elementelor de pe linia <<i<< este <<s<<endl;
}

Parcurgerea unei matrice pe coloane


S presupunem c trebuie s calculm produsul elementelor de pe fiecare coloan a matricei:
int p;
for(j=0;j<m; j++)
{
p=1;
for(i=0;i<n;i++)
p=p*a[i][j];
cout<<Produsul elementelor de pe coloana <<j<< este <<p<<endl;
}

Prelucrri elementare specifice matricelor ptratice


O matrice se numete ptratic dac numrul de linii este egal cu numrul de coloane ale matricei.
O astfel de matrice are dou diagonale:
diagonala principal (care unete elementul a[0][0] cu elementul a[n-1][n-1])
diagonala secundar (care unete elementul a[0][n-1] cu elementul a[n-1][0])
Putem caracteriza elementele aflate pe una dintre cele dou diagonale astfel:
- pe diagonala principal, indicele de linie este egal cu indicele de coloan.
- pe diagonala secundar, sum dintre indicele de linie i indicele de coloan este constant
(n-1).
Exemplu: afiarea elementelor aflate pe diagonala principal
for (i=0;i<n;i++) cout<<a[i][i]<< ;

Exemplu: calculul sumei elementelor aflate pe diagonala secundar:


int s=0;
for (i=0;i<n;i++) s+=a[i][n-1-i];

Potrivit celor dou diagonale ale unei matrice ptratice, putem discuta i de anumite zone ale
matricei, precum: elementele aflate deasupra diagonalei principale, elementele aflate sub diagonala
principal etc.
Exemplu: calculul produsului elementelor aflate sub diagonala principal:
int p=1;
for (i=1;i<n;i++)
for (j=0;j<i;j++)
p=p*a[i][j];

Bibliografie
E. Cerchez, M. Serban - Programarea n limbajul C/C++. Volumul I. Editura Polirom
E. Cerchez Informatica, Culegere de probleme pentru liceu. Editura Polirom
http://campion.edu.ro/arhiva/index.php?page=home&action=view

PROBLEME PROPUSE
1. Fie o matrice ptratic cu n linii (n100) cu elemente de tip int.
a. Numrai cte elemente din matrice au ca vecini numai numere pare (dou elemente sunt numite
vecine dac sunt adiacente pe vertical sau orizontal).
b. Determinai sumele elementelor de pe chenarele concentrice ale matricei.
2. Scriei un program care citete de la tastatur dou numere naturale n i m (2<n<25, 2<m<25) i
construiete n memorie un tablou bidimensional cu n linii i m coloane, n care orice element aflat
pe ultima linie sau pe ultima coloan are valoarea 1 i oricare alt element este egal cu ultima cifr a
sumei celor dou elemente alturate lui, aflate pe aceeai linie i pe coloana din dreapta, respectiv
pe aceeai coloan i pe linia urmtoare, ca n exemplu.
Programul afieaz pe ecran tabloul obinut, cte o linie a tabloului pe cte o linie a ecranului,
elementele fiecrei linii fiind separate prin cte un spaiu. (Simulare bacalaureat, decembrie 2013)
Exemplu: pentru n=4 i m=5 se afieaz tabloul urmtor:
50041
50631
54321
11111
3. balcon
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=990
4. triunghi4
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1414
5. flori
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=820
6. elicop
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=1419

3. balcon
Pentru c vacana vine mai repede (i prin surprindere), iar zpada nu prea este, Lenu vrea s-i
aranjeze balconul de la dormitorul su. Dei acesta e frumos luminat i pavat cu plcue de gresie ea
zice c nu se poate simi bine deoarece florile nu sunt corect aranjate.
Balconul are form ptrat i este pavat cu nxn plcue de gresie de aceeai dimensiune. Pe fiecare
plcu de gresie se afl un ghiveci cu flori. Lenu hotrte s aranjeze ghivecele n spiral dup
principiul Feng Shui: pe primul ir de plcue, sub geam, le pune pe cele mai mici, apoi pe cele mai
mricele lng peretele din dreapta al vecinei, apoi pe cele mai mari lng peretele sufrageriei, pe
cele si mai mari lng peretele de la buctrie i tot aa n spiral le aranjeaz pe toate. Astfel,
parcurgnd plcuele de gresie n spiral, n sensul acelor de ceasornic, florile trebuie s fie n
ordine cresctoare a nlimilor.
Cerin
Scriei un program care s afieze florile aranjate dup principiul Feng Shui.
Date de intrare
Fiierul de intrare balcon.in conine pe prima linie numrul natural nenul n. Pe urmtoarele n linii
sunt scrise cte n numere naturale separate prin spaii, reprezentnd nlimile florilor aa cum sunt
ele iniial aezate n balcon.
Date de ieire
Fiierul de ieire balcon.out va conine aranjamentul florilor dup principiul Feng Shui, prezentat
n enun. Valorile scrise pe aceeai linie vor fi separate printr-un singur spaiu.
Restricii
1 n 50

nlimile florilor sunt numere naturale 200 cm.


Exemple
balcon.in

balcon.out

4
1 8 6 18
4 122 5 3
12 11 19 23
21 9 16 15

1 3 4 5
18 19 21 6
16 122 23 8
15 12 11 9

4. triunghi4
Se consider un triunghi alctuit din numere naturale scrise pe n linii ca n figura alturat. Liniile
triunghiului sunt numerotate de la 1 la n, ncepnd cu linia de la baza triunghiului (linia de jos), iar
poziiile pe linie sunt numerotate ncepnd cu 1 de la stnga la dreapta.
Fiecare numr din triunghi, exceptnd pe cele de pe linia 1, este egal cu suma numerelor aflate
imediat sub el, n stnga i respectiv n dreapta lui.

Cerin
Cunoscnd cte un numr de pe fiecare linie a triunghiului, determinai toate numerele de pe linia 1.
Date de intrare
Fiierul de intrare triunghi4.in conine pe prima linie numrul natural n reprezentnd numrul de
linii din triunghi. Pe urmtoarele n linii sunt descrise informaiile despre triunghi. Mai exact, pe
linia i (1in) dintre cele n se afl dou numere naturale separate prin spaiu pi vi indicnd poziia
i respectiv valoarea numrului cunoscut de pe linia i a triunghiului.
Date de ieire
Fiierul de ieire triunghi4.out va conine o singur linie, pe care se gsesc n numere naturale
separate prin cte un spaiu, reprezentnd n ordinea de la stnga la dreapta numerele scrise pe linia
1 a triunghiului.
Restricii
1 <= n <= 1000
1 <= pi <= n+1-i, pentru 1in
Toate numerele din triunghi sunt numere naturale cu cel mult 18 cifre.
Exemple
triunghi4.in

triunghi4.out

Explicaii

5 4 4 2 5 3 13 2 25 1 45

1 2 3 4 2

Triunghiul este:
45
20 25
8 12 13
3 5 7 6
1 2 3 4 2

5. flori
La grdini n grupa mare sunt n fetie, numerotate de la 1 la n. Fetiele culeg flori i vor s
mpleteasc coronie pentru festivitatea de premiere. n grdin sunt mai multe tipuri de flori.
Fiecare dintre cele n fetie culege un buchet avnd acelai numr de flori, ns nu neaprat de
acelai tip. Pentru a mpleti coroniele fetiele se mpart n grupe.
Grupele se formeaz n felul urmtor:
- se alege fetia cu numrul de ordine cel mai mic care nu aparine niciune grupe; aceast feit va fi
considerat reprezentanta grupei;
- apoi se ataeaz grupei toate fetiele care au cel puin o floare de acelai tip cu una dintre florile
fetielor existente deja n grup.
Acest procedeu se aplic pn cnd toate fetiele sunt distribuite n grupe.
Cerin
Scriei un program care s determine grupele care se formeaz conform procedeului descris n
enun.
Date de intrare
Fiierul de intrare flori.in conine pe prima linie, separate printr-un spaiu, numerele naturale n i
k, reprezentnd numrul de fetie i respectiv numrul de flori din fiecare buchet. Pe urmtoarele n
linii sunt descrise buchetele culese de cele n fetie. Mai exact, pe linia i+1 se afl k numere naturale
separate prin spaiu reprezentnd tipurile florilor culese de fetia i.
Date de ieire
Fiierul de ieire flori.out va conine pe fiecare linie cte o grup, specificat prin numerele de
ordine ale fetielor din grup separate prin cte un spaiu, n ordine cresctoare. Grupele vor fi
specificate n ordinea cresctoare a reprezentantelor lor.
Restricii
1 <= n <= 150
1 <= k <= 100

Tipul unei flori este un numr ntreg din intervalul [0, 100].
Exemple
flori.in

flori.out

5 4 1 2 3 4 5 6 1 3 4 2 5
9 6 1 1 1 1 2 4
4 3 7 7 7 7

Explicaii
Fetiele 1 i 3 au cules amndou flori de tipul 1, iar fetiele 1 i 4
au cules amndou flori de tipurile 2,3 i 4, deci toate cele trei
fetie (1, 3, 4) se vor afla n aceeai grup. Fetiele 2 i 5 vor forma
fiecare cte o grup deoarece nu au cules flori de acelai tip cu nici
una dintre celelalte fetie.

6. elicop
Un teren de fotbal este folosit pentru aterizarea elicopterelor. Gazonul de pe stadion este parcelat n ptrele de aceeai dimensiune,
cu laturile paralele cu marginile terenului. Liniile cu ptrele de gazon sunt numerotate de sus n jos cu numerele 1, 2, ..., m, iar
coloanele cu ptrele de gazon sunt numerotate de la stnga la dreapta cu numerele 1, 2, ..., n. Din cauza tipului diferit de iarb se
tie care dintre ptrele de gazon sunt afectate sau nu de umbr. Acest lucru este precizat printr-un tablou bidimensional a cu m linii
i n coloane, cu elemente 0 i 1 (aij= 0 nseamn c ptrelul aflat pe linia i i coloana j este afectat de umbr, iar aij= 1
nseamn c ptrelul aflat pe linia i i coloana j nu este afectat de umbr). Fiecare elicopter are 3 roi pe care se sprijin. Roile
fiecrui elicopter determin un triunghi dreptunghic isoscel. Elicopterele aterizeaz, astfel nct triunghiurile formate s fie cu
catetele paralele cu marginile terenului. n exemplul urmtor avem patru elicoptere.

Pentru a preciza poziia unui elicopter pe teren este suficient s cunoatem linia i coloana vrfurilor ipotenuzei i poziia vrfului
deasupra (codificat prin 1) sau dedesubtul ipotenuzei (codificat prin -1). Pentru exemplu, elicopterul din stnga sus este dat prin
(1,1), (3,3) i -1, cel din dreapta sus prin (1,9), (5,5) i 1, cel din stnga jos prin (5,1), (6,2) i 1, iar cel din dreapta jos prin (5,9), (6,8)
i 1.
Un elicopter se consider c a aterizat greit, dac triunghiul format sub el (definit mai sus) are mai mult de jumtate din ptrele
afectate de umbr.
Administratorul terenului de fotbal dorete s determine numrul N1 de elicoptere, care nu afecteaz nici un ptrel din teren i
numerele de ordine al elicopterelor, care au aterizat greit n ordine cresctoare: e1, e2, ..., eN2, tiind c exist k elicoptere
codificate prin numerele 1, 2, ..., k.
Cerin
Scriei un program care s determine, pentru fiierul cu datele din enun: numrul de elicoptere N1, care nu afecteaz nici un ptrel
din teren i numerele de ordine al elicopterelor, care au aterizat greit n ordine cresctoare, precedate de numrul lor N2.
Date de intrare
Prima linie a fiierului de intrare elicop.in conine dou numere naturale m i n, separate printr-un spaiu, cu semnificaia din
enun. Urmtoarele m linii conin cte n numere 0 sau 1, separate prin cte un spaiu cu semnificaia 0 ptrel de gazon care este
afectat de umbr, respectiv 1- ptrel care nu este afectat de umbr. Pe linia m+2 se afl numrul de elicoptere k, iar pe urmtoarele
k linii (n ordinea codificrii lor 1, 2, ..., k) cte cinci numere separate prin cate un spaiu, pentru liniile i coloanele ipotenuzelor i
poziia vrfului (1 sau -1), triunghiurilor dreptunghice asociate elicopterelor: L1 C1 L2 C2 p.
Date de ieire
Fiierul de ieire elicop.out va conine dou linii: prima linie numrul N1 de elicoptere, pe care nu afecteaz nici un ptrel din
teren, a doua linie cu numerele naturale N2, e1, e2, ..., eN2 separate prin cte un spaiu, n ordine cresctoare.
Restricii
2 m, n 100
1 k 40
Nu exist suprapuneri de triunghiuri asociate la dou elicoptere.
Triunghiurile asociate elicopterelor conin cel puin trei ptrele.
Exemple
elicop.in
7
1
0
0
1
0
1
1
4
1
1
5
5

9
1
0
0
1
0
1
1

1
0
1
1
1
1
1

1
0
0
0
1
1
1

1
1
1
1
1
1
1

1
9
1
9

3
5
6
6

3
5
2
8

-1
1
1
1

1
1
1
1
1
1
1

1
1
1
0
0
0
0

1
1
0
1
1
1
0

1
0
0
1
1
1
1

elicop.out

Explicaii

2
2 1 3

Elicopterele 2 i 4 nu afecteaz niciun ptrel de gazon.


Elicopterele 1 i 3 afecteaz fiecare mai mult de jumtate din numrul ptrelelor
asociate triunghiurilor dreptunghice i deci aterizeaz greit. Elicopterul 1 face
umbr la 6 ptrele, din care afectate sunt 4.
Elicopterul 3 face umbr la 3 ptrele, din care afectate sunt dou.

S-ar putea să vă placă și