Documente Academic
Documente Profesional
Documente Cultură
Cap 04
Cap 04
4
TABLOURI
4.1. Declararea tablourilor 4.3. Tablouri bidimensionale
4.2. Tablouri unidimensionale 4.4. iruri de caractere
4.1. DELARAREA TABOURILOR
Numim tablou o colecie (grup, mulime ordonat) de date, de acelai tip, !ituate "ntr#o $on de memorie
continu (elementele tabloului !e a%l la adre!e !ucce!i&e)' Tablourile !unt variabile compuse (structurate),
deoarece grupea$ mai multe elemente' (ariabilele tablou au nume, iar tipul tabloului e!te dat de tipul
elementelor !ale' )lementele tabloului pot %i re%erite prin numele tabloului i indicii (numere "ntregi) care
repre$int po$iia elementului "n cadrul tabloului'
*n %uncie de numrul indicilor utili$ai pentru a re%eri elementele tabloului, putem "nt+lni tablouri
unidimensionale (&ectorii) !au multidimensionale (matricile !unt tablouri bidimen!ionale)'
Ca i &ariabilele !imple, &ariabilele tablou trebuie declarate "nainte de utili$are'
,odul de declarare-
tip nume_tablou[dim_1][dim_2][dim_n];
unde-tip repre$int tipul elementelor tabloului. dim_1,dim_2,...,dim_n !unt numere "ntregi !au
e/pre!ii con!tante "ntregi (a cror &aloare e!te e&aluat la compilare) care repre$int limitele !uperioare ale
indicilor tabloului'
Exemple:
001
int vect[20]; 00 declararea tabloului vect, de ma/imum 23 de elemente, de tipul int'
00 4e re$er& 235!i$eo%(int)623 5 2 6 43 octei
002
double p,q,tab[10];
00 declararea &ariabilelor !imple p, 7 i a &ectorului tab, de ma/imum 13 elemente, tip
double
008
#define MAX 10
ca! tabc[MAX]; !"declararea tabloului tabc, de ma/imum ,A9 (13) elemente de tip c:ar50
004
double mat!ice[2]["]; 00 declararea tabloului mat!ice (bidimen!ional),
00 ma/imum 2 linii i ma/imum 8 coloane, tip double
4.2. TABLOURI U#IDI$E#%IO#ALE
Tablourile unidimen!ionale !unt tablouri cu un !ingur indice (&ectori)' ;ac tabloul conine dim_1 elemente,
indicii elementelor au &alori "ntregi din inter&alul [0, dim_1#1]'
La "nt+lnirea declaraiei unei &ariabile tablou, compilatorul aloc o $on de memorie continu (dat de
produ!ul dintre dimen!iunea ma/im i numrul de octei core!pun$tor tipului tabloului) pentru p!trarea
&alorilor elementelor !ale' Numele tabloului poate %i utili$at "n di%erite e/pre!ii i &aloarea lui e!te c:iar
adre!a de "nceput a $onei de memorie care i#a %o!t alocat' Un element al unui tablou poate %i utili$at ca orice
alt &ariabil ("n e/emplul urmtor, atribuirea de &alori elementelor tabloului vecto!)' 4e pot e%ectua
operaii a!upra %iecrui element al tabloului, nu a!upra "ntregului tablou'
1
CAPITOLUL 4 Tablouri
Exemplu:
&ector
00 ;eclararea tabloului vecto!
int vecto![$];
00 Iniiali$area elementelor tabloului
vecto![0]%100;
vecto![1]%101;
vecto![2]%102;
vecto!["]%10";
vecto![&]%10&;
vecto![']%10';
Exemplu:
double alpa['], beta['], (ama['];
int i%2;
alpa[2)i#1] % '.*+;
alpa[0]%2)beta[i],".';
(ama[i]%apla[i],beta[i]; 00permi!
(ama%alpa,beta; 00nepermi!
(ariabilele tablou pot %i iniiali$ate "n momentul declarrii-
decla!a-ie_tablou%li.t/_valo!i;
(alorile din li!ta de &alori !unt !eparate prin &irgul, iar "ntreaga li!t e!te inclu! "ntre acolade-
Exemple:
001
int vecto![$]%0100,101,102,10",10&,10'1;
<3= <>=
002
double 2%3.+;
double a[']%01.2, ".', 2, 2#1, *.'1;
La declararea unui &ector cu iniiali$area elementelor !ale, numrul ma/im de elemente ale tabloului poate %i
omi!, ca$ "n care compilatorul determin automat mrimea tabloului, "n %uncie de numrul elementelor
iniiali$ate'
Exemplu:
ca! tab[]%0 4A4, 454, 464, 4541;
<3= <8=
float data[']%0 1.2, 2.", ".& 1;
<3= <4=
Adre!a elementului de indice i dintr#un tablou unidimen!ional poate %i calculat a!t%el-
adresa_elementului_i = adresa_de_baz + i
lungime_element
Exerci ii :
001 Citirea elementelor unui &ector-
double a['];
int i;
2
CAPITOLUL 4 Tablouri
fo! 7i%0; i8'; i,,9
0 cout88:a[;88i88:]%:; 00a%iarea unui me!a? prealabil citirii %iecrui element
cin<<a[i]; 00citirea &alorii elementului de indice i
1
004au-
double a[20]; int i, n;
cout88:6im. Ma2. %:; cin<<n;
fo! 7i%0; i8n; i,,9
0 cout88:a[=88i88:]%:;
cin<<a[i];
1
002 A%iarea elementelor unui &ector-
cout88:>ecto!ul int!odu. e.te?@n:;
fo! 7i%0; i8n i,,9
cout88a[i]884 4;
008 A%iarea elementelor unui &ector "n ordine in&er!-
cout88:Alementele vecto!ului Bn o!dine inve!./?@n:;
fo! 7i%n#1; i<%0 i,,9
cout88a[i]884 4;
008 (ectorul !um (c) a &ectorilor a i b, cu acelai numr de elemente-
fo! 7i%0; i8n i,,9
c[i]%a[i],b[i];
004 (ectorul di%eren (c) a &ectorilor a i b, cu acelai numr de elemente-
fo! 7i%0; i8n i,,9
c[i]%a[i] # b[i];
00> Produ!ul !calar (p) a &ectorilor a i b, cu acelai numr de elemente-
p6
a b
i i
i
n
3
1
double p%0;
fo! 7i%0; i8n i,,9
p ,% a[i]
b[i];
4.2. TABLOURI BIDI$E#%IO#ALE
;in punct de &edere conceptual, elementele unui tablou bidimen!ional !unt pla!ate "n !paiu pe dou direcii'
,atricea repre$int o aplicaie natural a tablourilor bidimen!ionale'
*n matematic-
q
11
q
12
q
18
. . . q
1n
q
21
q
22
q
28
. . . q
2n
C% . . . . . . . . . . . . . . . . . . . . . . . . . . Q
m n
q
m1
q
m2
q
m8
. . . q
mn
*n limba?ele C0C@@ (indicii de linie i de coloan porne!c de la 3)-
q
33
q
31
q
32
. . . q
3 1 ,n
C%
q
13
q
11
q
12
. . . q
1 1 ,n
Q
m n
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
q
m1 3 ,
q
m1 1 ,
q
m1 2 ,
. . . q
m n 1 1 ,
Exemplu:
double q["][2]; 00 declararea matricii q, cu ma/im8 linii i 2 coloane, tip double
8
CAPITOLUL 4 Tablouri
*n memorie, elementele unei matrici !unt memorate pe linii-
q
33
q
31
q
13
q
11
q
23
q
21
. . .
;ac notm cu A po$iia "n memorie a unui element, &aloarea lui A 6 i
fal.e
5UO OUMW not (ata PAWAOA
UD5AWQO
K
CAPITOLUL 4 Tablouri
(ata % t!ue
WADOPQ i%0 NA n#2 PAWAOA
UD5AWQO
6A5A vect[i] < vect[i,1] AOQD5U
X UD5AWQO
au2%vect[i]
vect[i]%vect[i,1]
vect[i,1]%au2
(ata%fal.
JMAPJUO
JMAPJUO
JMAPJUO
JMAPJUO
00 implementarea metodei Lubble4ort
int (ata %MANJA;int i;
Yile 7K(ata90
(ata%OPQA;
fo! 7i%0; i8%n#2; i,,9
if 7vect[i]<vect[i,1]90
aux%vect[i];
vect[i]%vect[i,1];
vect[i,1]%au2;
(ata%MANJA;1
1
Exemplu: 4 !e citea!c elementele matricilor A(,9N), L(N9P) i C(,9N), unde ,M613, NM613 i PM613'
4 !e inter!c:imbe liniile matricii A "n modul urmtor- prima cu ultima, a doua cu penultima, etc' 4 !e
calcule$e i ! !e a%ie$e matricile- AT6A
T
, 4U,6A@C, PJO;6A9L' Implementarea citirilor i a%irilor !e
&a completa con%orm e/emplului dat "n capitolul 4'2'
#include 8io.t!eam.<
void main79
0
double a[10][10], b[10][10], c[10][10];
int m,n,p,E;
cout88;m%;; cin<<m; cout88;n%;; cin<<n; cout88;p%;; cin<<p;
00 de completat !ec&ena de citire a elementelor matricii a, cu m linii i n coloane
00 de completat !ec&ena de citire a elementelor matricii b, cu n linii i p coloane
00 de completat !ec&ena de a%iare a matricii a
00inter!c:imbarea liniilor matricii A-
fo! 7i%0; i8mR2; i,,9
fo! 7E%0; E8n; E,,90
double au2%a[i][E];a[i][E]%a[m#1#i][E];a[m#1#i][E]%au2;
1
cout88;Mat!icea A cu liniile inte!.cimbate?@n;;
00 de completat !ec&ena de a%iare a matricii a
00 calculul matricii AT 6A
T
double at[10][10]; 00 at e!te matricea tran!pu!a
fo! 7i%0; i8n; i,,9
fo! 7E%0; E8m; E,,9
at[i][E]%a[E][i];
cout88;A t!an.pu.%@n;;
00 de completat !ec&ena de a%iare a matricii at, cu n linii !i m coloane
00 de completat !ec&ena de citire a elementelor matricii c, cu m linii i n coloane
00 calculul matricii 4U,6A@C, 4U,(,/N)-
double .um[10][10]; 00 .um e!te matricea !uma dintre a !i c
fo! 7i%0; i8m; i,,9
fo! 7E%0; E8n; E,,9
.um[i][E]%a[i][E], c[i][E];
B
CAPITOLUL 4 Tablouri
cout88;Mat!icea JQM%A,5 e.te?@n;;
00 de completat !ec&ena de a%iare a matricii .um
double p!od[10][10]; 00 p!od e!te matricea produ! dintre a !i b
fo! 7i%0; i8m; i,,9
fo! 7E%0; E8p; E,,90
p!od[i][E]%0;
fo! 7Z%0; Z8n; Z,,9
p!od[i][E],%a[i][Z])b[Z][E];
1
cout88;Mat!icea p!odu. dint!e A .i V e.te?@n;;
00 de completat !ec&ena de a%iare a matricii p!od, cu m linii !i p coloane
1
4e ob!er& c %iecare element din matricea produ! PJO;6A9L ( A(,9N), L(N9P) ), PJO;(,9P) e!te de
%orma- p!od
j i,
6
j k
n
k
k i
b a
,
1
3
,
5
=
, unde i6
1 , 3 m
i ?6
1 , 3 n
'
)#TREB*RI I E+ERI'II
,estiuni teoretice
1' Care e!te di%erena dintre irurile de caractere i
&ectorii de caractereN
2' Ce !unt tablourileN
8' ;e ce tablourile repre$int date !tructurateN
4' Prin ce !e re%er elementele unui tablouN
>' Cine impune tipul unui tablouN
C
,estiuni a-licati.e
1' 4 !e implemente$e programele cu e/emplele pre$entate'
2' 4 !e !crie programele pentru e/erciiile re$ol&ate care au %o!t pre$entate'
8' 4e cite!c de la ta!tatura elementele unei matrici de caractere (nr' linii6nr' coloane), A(N9N), NM613'
a) 4 !e a%ie$e matricea A.
b) 4 !e %orme$e i ! !e a%ie$e cu&+ntul %ormat din caracterele pe pe diagonala principal a matricii A.
c) 4 !e calcule$e i ! !e a%ie$e numrul de litere mari, litere mici i ci%re din matrice.
d) 4 !e a%ie$e cu&+ntul %ormat din caracterele de pe diagonala !ecundar.
e) 4 !e a%ie$e procentul literelor mari, al literelor mici i al ci%relor de pe cele 2 diagonale.
%) 4 !e a%ie$e caracterele comune a%late pe liniile p i 7 (p, 7 M N, p i 7 citite de la ta!tatur).
g) 4 !e a%ie$e "n ordine al%abetic, cre!ctoare, literele mari a%late pe coloanele impare'
4' 4e cite!c de la ta!tatur elementele unei matrici cu elemente reale, L (N 9 N), NM6C'
a) 4 !e a%ie$e matricea L.
b) 4 !e calcule$e i ! !e a%ie$e produ!ul elementelor de pe coloanele impare.
c) 4 !e calcule$e i ! !e a%ie$e matricea A, unde- A 6 ( L @
T
B
)
2
.
d) 4 !e %orme$e i ! !e a%ie$e &ectorul (, ale crui elemente !unt elementele po$iti&e din matricea A.
e) 4 !e calcule$e i ! !e a%ie$e !umele i produ!ele elementelor matricii A, a%late "n triung:iurile
:aurate-
%) 4 !e calcule$e procentul elementelor po$iti&e a%late pe diagonala !ecundar.
g) 4 !e calcule$e i ! !e a%ie$e matricea C, unde- C
6 8 5 L
T
@ L
2
.
:) 4 !e calcule$e i ! !e a%ie$e matricea ;, unde- ; 6 L @ L
2
@ L
8
@ L
4
.
i) 4 !e inter!c:imbe coloanele matricii A a!t%el- prima cu ultima, a doua cu antipenultima, etc'
>' 4e cite!c de la ta!tatur elementele unei matrici de numere "ntregi C (N 9 N), NM613'
a) 4 !e a%ie$e matricea C.
b) 4 !e calcule$e i ! !e a%ie$e procentul elementelor impare de pe liniile pare.
c) 4 !e calcule$e i ! !e a%ie$e matricea L, unde- L6C
2
.
d) 4 !e calcule$e i ! !e a%ie$e matricea ), unde- ) 6 (C @ C
T
)
2
@
I, unde I e!te matricea unitate.
e) 4 !e a%le elementul minim din matricea C.
%) 4 !e "nlocuia!c elementul ma/im din matricea C cu &aloarea val, introdu! de la ta!tatur.
g) 4 !e a%ie$e elementele matricii C care !unt numere prime.
:) 4 !e calcule$e i ! !e a%ie$e !umele i produ!ele elementelor matricii A, a%late "n triung:iurile
:aurate-