You are on page 1of 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 !om
iniializa la declarare.
int a[2][3]={{1,2,3},{4,5,6}};
Putem s ne ima"inm matricea astfel
coloana # coloana $ coloana %
linia # $ % &
linia $ ' ( )
Pentru a ne referi la elementul de pe linia #, coloana % din matricea a !om scrie a*#+*%+.
,itirea unei matrice se realizeaz ca n exemplul de mai -os
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];
.fiarea unei matrice
for(i=0;i<n; i++)
{ for(j=0;j<m;j++)
cout<<a[i][j]<< ;
cout<<!n"#;}
Parcur"erea unei matrice pe linii
/ presupunem c trebuie s calculm suma elementelor de pe fiecare linie a matricei
int $;
for(i=0;i<n; i++)
{ $=0;
for(j=0;j<m;j++)
$=$+a[i][j];
cout<<%&uma !#!m!nt!#or "! '! #inia %<<i<<% !$t! %<<$<<!n"#;
}
Parcur"erea unei matrice pe coloane
/ presupunem c trebuie s calculm produsul elementelor de pe fiecare coloan a matricei
int ';
for(j=0;j<m; j++)
{ '=1;
for(i=0;i<n;i++)
'='(a[i][j];
cout<<%)ro"u$u# !#!m!nt!#or "! '! co#oana %<<j<<% !$t! %<<'<<!n"#;
}
$
Prelucrri elementare specifice matricelor ptratice
0 matrice se numete ptratic dac numrul de linii este e"al cu numrul de coloane ale matricei.
0 astfel de matrice are dou dia"onale
dia"onala principal 1care unete elementul a*#+*#+ cu elementul a*n2$+*n2$+3
dia"onala secundar 1care unete elementul a*#+*n2$+ cu elementul a*n2$+*#+3
Putem caracteriza elementele aflate pe una dintre cele dou dia"onale astfel
2 pe dia"onala principal, indicele de linie este e"al cu indicele de coloan.
2 pe dia"onala secundar, sum dintre indicele de linie i indicele de coloan este constant
1n2$3.
Exemplu afiarea elementelor aflate pe dia"onala principal
for (i=0;i<n;i++) cout<<a[i][i]<<* +;
Exemplu calculul sumei elementelor aflate pe dia"onala secundar
int $=0;
for (i=0;i<n;i++) $+=a[i][n,1,i];
Potri!it celor dou dia"onale ale unei matrice ptratice, putem discuta i de anumite zone ale
matricei, precum elementele aflate deasupra dia"onalei principale, elementele aflate sub dia"onala
principal etc.
Exemplu calculul produsului elementelor aflate sub dia"onala principal
int '=1;
for (i=1;i<n;i++)
for (j=0;j<i;j++)
'='(a[i][j];
Bibliografie
E. ,erc4ez, 5. /erban 2 Pro"ramarea n limba-ul ,6,77. 8olumul 9. Editura Polirom
E. ,erc4ez :9nformatica, ,ule"ere de probleme pentru liceu. Editura Polirom
4ttp66campion.edu.ro6ar4i!a6index.p4p;pa"e<4ome=action<!ie>
%
PROBLEE PROP!"E
$. ?ie o matrice ptratic cu n linii 1n@$##3 cu elemente de tip int.
a. Aumrai cte elemente din matrice au ca !ecini numai numere pare 1dou elemente sunt numite
!ecine dac sunt adiacente pe !ertical sau orizontal3.
b. Beterminai sumele elementelor de pe c4enarele concentrice ale matricei.
%. /criei un pro"ram care citete de la tastatur dou numere naturale n i m 1%CnC%(, %CmC%(3 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 !aloarea $ i oricare alt element este e"al cu ultima cifr a
sumei celor dou elemente alturate lui, aflate pe aceeai linie i pe coloana din dreapta, respecti!
pe aceeai coloan i pe linia urmtoare, ca n exemplu.
Pro"ramul 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. 1/imulare bacalaureat, decembrie %#$&3
E#emplu pentru n$% i m$& se afieaz tabloul urmtor
( # # ' $
( # ) & $
( ' & % $
$ $ $ $ $
&. balcon
4ttp66campion.edu.ro6ar4i!a6index.p4p;pa"e<problem=action<!ie>=id<DD#
'. triun"4i'
4ttp66campion.edu.ro6ar4i!a6index.p4p;pa"e<problem=action<!ie>=id<$'$'
(. flori
4ttp66campion.edu.ro6ar4i!a6index.p4p;pa"e<problem=action<!ie>=id<E%#
). elicop
4ttp66campion.edu.ro6ar4i!a6index.p4p;pa"e<problem=action<!ie>=id<$'$D
&
'. balcon
Pentru c !acana !ine mai repede 1i prin surprindere3, iar zpada nu prea este, Fenu !rea s2i
aran-eze balconul de la dormitorul su. Bei acesta e frumos luminat i pa!at cu plcue de "resie ea
zice c nu se poate simi bine deoarece florile nu sunt corect aran-ate.
Galconul are form ptrat i este pa!at cu n-n plcue de "resie de aceeai dimensiune. Pe fiecare
plcu de "resie se afl un "4i!eci cu flori. Fenu 4otrte s aran-eze "4i!ecele n spiral dup
principiul ?en" /4ui pe primul ir de plcue, sub "eam, le pune pe cele mai mici, apoi pe cele mai
mricele ln" peretele din dreapta al !ecinei, apoi pe cele mai mari ln" peretele sufra"eriei, pe
cele si mai mari ln" peretele de la buctrie i tot aa n spiral le aran-eaz pe toate. .stfel,
parcur"nd plcuele de "resie n spiral, n sensul acelor de ceasornic, florile trebuie s fie n
ordine cresctoare a nlimilor.
,erin
/criei un pro"ram care s afieze florile aran-ate dup principiul ?en" /4ui.
Bate de intrare
?iierul de intrare .a#con/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.
Bate de ieire
?iierul de ieire .a#con/out !a conine aran-amentul florilor dup principiul ?en" /4ui, prezentat
n enun. 8alorile scrise pe aceeai linie !or fi separate printr2un sin"ur spaiu.
Hestricii
1 0 n 0 50
Inlimile florilor sunt numere naturale @ %## cm.
Exemple
balcon.in balcon.out
4
1 1 6 11
4 122 5 3
12 11 12 23
21 2 16 15
1 3 4 5
11 12 21 6
16 122 23 1
15 12 11 2
'
%. triung(i%
/e consider un triun"4i alctuit din numere naturale scrise pe n linii ca n fi"ura alturat. Finiile
triun"4iului sunt numerotate de la $ la n, ncepnd cu linia de la baza triun"4iului 1linia de -os3, iar
poziiile pe linie sunt numerotate ncepnd cu $ de la stn"a la dreapta.
?iecare numr din triun"4i, exceptnd pe cele de pe linia $, este e"al cu suma numerelor aflate
imediat sub el, n stn"a i respecti! n dreapta lui.
,erin
,unoscnd cte un numr de pe fiecare linie a triun"4iului, determinai toate numerele de pe linia $.
Bate de intrare
?iierul de intrare triun34i4/in conine pe prima linie numrul natural n reprezentnd numrul de
linii din triun"4i. Pe urmtoarele n linii sunt descrise informaiile despre triun"4i. 5ai exact, pe
linia i 110i0n3 dintre cele n se afl dou numere naturale separate prin spaiu '
i
5
i
indicnd poziia
i respecti! !aloarea numrului cunoscut de pe linia i a triun"4iului.
Bate de ieire
?iierul de ieire triun34i4/out !a conine o sin"ur linie, pe care se "sesc n numere naturale
separate prin cte un spaiu, reprezentnd n ordinea de la stn"a la dreapta numerele scrise pe linia
$ a triun"4iului.
Hestricii
J 1 <= n <= 1000
J 1 <= '
i
<= n+1,i, pentru 10i0n
J Koate numerele din triun"4i sunt numere naturale cu cel mult $E cifre.
Exemple
triunghi4.in triunghi4.out
E#plicaii
5 4 4 2 5 3 13 2 25 1 45 1 2 3 4 2
Kriun"4iul este
45
20 25
1 12 13
3 5 6 6
1 2 3 4 2
(
&. flori
Fa "rdini n "rupa mare sunt n fetie, numerotate de la $ la n. ?etiele cule" flori i !or s
mpleteasc coronie pentru festi!itatea de premiere. In "rdin sunt mai multe tipuri de flori.
?iecare dintre cele n fetie cule"e un buc4et a!nd acelai numr de flori, ns nu neaprat de
acelai tip. Pentru a mpleti coroniele fetiele se mpart n "rupe.
Lrupele se formeaz n felul urmtor
2 se ale"e fetia cu numrul de ordine cel mai mic care nu aparine niciune "rupeM aceast feit !a fi
considerat reprezentanta "rupeiM
2 apoi se ataeaz "rupei toate fetiele care au cel puin o floare de acelai tip cu una dintre florile
fetielor existente de-a n "rup.
.cest procedeu se aplic pn cnd toate fetiele sunt distribuite n "rupe.
,erin
/criei un pro"ram care s determine "rupele care se formeaz conform procedeului descris n
enun.
Bate de intrare
?iierul de intrare f#ori/in conine pe prima linie, separate printr2un spaiu, numerele naturale n i
7, reprezentnd numrul de fetie i respecti! numrul de flori din fiecare buc4et. Pe urmtoarele n
linii sunt descrise buc4etele culese de cele n fetie. 5ai exact, pe linia i+1 se afl 7 numere naturale
separate prin spaiu reprezentnd tipurile florilor culese de fetia i.
Bate de ieire
?iierul de ieire f#ori/out !a conine pe fiecare linie cte o "rup, specificat prin numerele de
ordine ale fetielor din "rup separate prin cte un spaiu, n ordine cresctoare. Lrupele !or fi
specificate n ordinea cresctoare a reprezentantelor lor.
Hestricii
1 <= n <= 150
1 <= 7 <= 100
Kipul unei flori este un numr ntre" din inter!alul [0, 100].
Exemple
flori.in flori.out
E#plicaii
5 4 1 2 3 4 5 6
2 6 1 1 1 1 2 4
4 3 6 6 6 6
1 3 4 2 5
?etiele $ i & au cules amndou flori de tipul $, iar fetiele $ i '
au cules amndou flori de tipurile %,& i ', deci toate cele trei
fetie 1$, &, '3 se !or afla n aceeai "rup. ?etiele % i ( !or forma
fiecare cte o "rup deoarece nu au cules flori de acelai tip cu nici
una dintre celelalte fetie.
)
). elicop
Un teren de fotbal este folosit pentru aterizarea elicopterelor. Lazonul de pe stadion este parcelat n ptrele de aceeai dimensiune,
cu laturile paralele cu mar"inile terenului. Finiile cu ptrele de "azon sunt numerotate de sus n -os cu numerele $, %, ..., m, iar
coloanele cu ptrele de "azon sunt numerotate de la stn"a la dreapta cu numerele $, %, ..., n. Bin cauza tipului diferit de iarb se
tie care dintre ptrele de "azon sunt afectate sau nu de umbr. .cest lucru este precizat printr2un tablou bidimensional a cu m linii
i n coloane, cu elemente # i $ 1a
ij
= 0 nseamn c ptrelul aflat pe linia i i coloana j este afectat de umbr, iar a
ij
= 1
nseamn c ptrelul aflat pe linia i i coloana j nu este afectat de umbr3. ?iecare elicopter are & roi pe care se spri-in. Hoile
fiecrui elicopter determin un triun"4i dreptun"4ic isoscel. Elicopterele aterizeaz, astfel nct triun"4iurile formate s fie cu
catetele paralele cu mar"inile terenului. In exemplul urmtor a!em patru elicoptere.
Pentru a preciza poziia unui elicopter pe teren este suficient s cunoatem linia i coloana !rfurilor ipotenuzei i poziia !rfului
deasupra 1codificat prin $3 sau dedesubtul ipotenuzei 1codificat prin 2$3. Pentru exemplu, elicopterul din stn"a sus este dat prin
1$,$3, 1&,&3 i 2$, cel din dreapta sus prin 1$,D3, 1(,(3 i $, cel din stn"a -os prin 1(,$3, 1),%3 i $, iar cel din dreapta -os prin 1(,D3, 1),E3
i $.
Un elicopter se consider c a aterizat "reit, dac triun"4iul format sub el 1definit mai sus3 are mai mult de -umtate din ptrele
afectate de umbr.
.dministratorul terenului de fotbal dorete s determine numrul 81 de elicoptere, care nu afecteaz nici un ptrel din teren i
numerele de ordine al elicopterelor, care au aterizat "reit n ordine cresctoare !
1
, !
2
, ///, !
82
, tiind c exist 7 elicoptere
codificate prin numerele $, %, ..., 7.
,erin
/criei un pro"ram care s determine, pentru fiierul cu datele din enun numrul de elicoptere 81, care nu afecteaz nici un ptrel
din teren i numerele de ordine al elicopterelor, care au aterizat "reit n ordine cresctoare, precedate de numrul lor 82.
Bate de intrare
Prima linie a fiierului de intrare !#ico'/in conine dou numere naturale m i n, separate printr2un spaiu, cu semnificaia din
enun. Urmtoarele m linii conin cte n numere # sau $, separate prin cte un spaiu cu semnificaia # : ptrel de "azon care este
afectat de umbr, respecti! $2 ptrel care nu este afectat de umbr. Pe linia m7% se afl numrul de elicoptere 7, iar pe urmtoarele
7 linii 1n ordinea codificrii lor $, %, ..., 73 cte cinci numere separate prin cate un spaiu, pentru liniile i coloanele ipotenuzelor i
poziia !rfului 1$ sau 2$3, triun"4iurilor dreptun"4ice asociate elicopterelor 91 :1 92 :2 '.
Bate de ieire
?iierul de ieire !#ico'/out !a conine dou linii prima linie numrul 81 de elicoptere, pe care nu afecteaz nici un ptrel din
teren, a doua linie cu numerele naturale 82, !
1
, !
2
, ///, !
82
separate prin cte un spaiu, n ordine cresctoare.
Hestricii
J 2 0 m, n 0 100
J 1 0 7 0 40
J Au exist suprapuneri de triun"4iuri asociate la dou elicoptere.
J Kriun"4iurile asociate elicopterelor conin cel puin trei ptrele.
Exemple
elicop.in elicop.out E#plicaii
6 2
1 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 1 0
0 0 1 0 1 1 1 0 0
1 1 1 0 1 1 0 1 1
0 0 1 1 1 1 0 1 1
1 1 1 1 1 1 0 1 1
1 1 1 1 1 1 0 0 1
4
1 1 3 3 ,1
1 2 5 5 1
5 1 6 2 1
5 2 6 1 1
2
2 1 3
Elicopterele % i ' nu afecteaz niciun ptrel de "azon.
Elicopterele $ i & afecteaz fiecare mai mult de -umtate din numrul ptrelelor
asociate triun"4iurilor dreptun"4ice i deci aterizeaz "reit. Elicopterul $ face
umbr la ) ptrele, din care afectate sunt '.
Elicopterul & face umbr la & ptrele, din care afectate sunt dou.
N
E

You might also like