Sunteți pe pagina 1din 26

Tablouri

(MULȚIMI/MASIVE)
Tablouri
Tabloul reprezintă un şir ordonat de elemente de acelaşi tip.
Faptul, ca tabloul este un tot intreg, compus din cîteva elemente ne permite să numim variabila
de tip tablou variabilă de tip compus.
Tablouri
Tabloul se poate caracteriza prin nume, tip, dimensiune. Formatul comun de descriere a
tabloului este:
tip nume[d1][d1]…[dn];

tip: int, double, float, char…


nume: denumirea/numele tabloului
d1,d2,dn - dimensiunile tabloului (numărul de elemente prezente)
Tablouri
În dependență de dimensiune, tablourile se clasifică în:
1. tablouri unidimensionale (cu 1 dimensiune) – tabloul unidimensional reprezintă un șir de
elemente aranjate într-un rând. Fiecare element al unui tablou unidimensional are o
coordonată: numărul de ordine a elementului în șir.
int vector[20]; vector – tablou unidimensional din 20 de numere întregi;
float x[10]; x – tablou cu 10 elemente de tip float;
Tablouri unidimensionale
Tabloul unidimensional mai este numit vector (en. array)
Tablouri bidimensionale
2. tablouri bidimensionale (cu 2 dimensiuni) – tabloul bidimensional reprezintă o structură
formată din rînduri şi coloane. Fiecare element al unui tablou bidimensional are 2 coordonate:
numărul rîndului şi numărul coloanei.

Tablourile bidimensionale mai sunt numite matrici (en. matrix)


Tablouri bidimensionale
float matrix[7][9]; matrix - masiv bidimensional din 63 (7*9) de numere flotante;
Tablouri tridimensionale
3. tablouri tridimensionale (cu 3 dimensiuni) – tabloul tridimensional reprezintă o structură
echivalentă cu un cub în volum cu 3 dimensiuni: lungimea, lăţimea, înălţimea. Fiecare element al
unui tablou tridimensional are 3 coordonate: numărul rîndului (în lungime), numărul coloanei (în
lăţime) şi numărul înălţimei (în adâncime).

int spase[15][30][18]; space – tablou tridimensional de numere întregi (tablou unidimensional de


masive bidimensionale);
Tablouri multidimensionale
4. tablouri multidimensionale.
Iniţializarea tablourilor
Deseori e necesar ca elementele tabloului să posede valori chiar la momentul descrierii

tip nume[d]={v0,v1,v2,…,vn-1};
int x[8]={1,3,15,7,19,11,13,5};

elementele tabloului vor avea următoarele valori: x[0]=1;


x[1]=3; x[2]=15; x[3]=7; x[4]=19; x[5]=11; x[6]=13; x[7]=5;
Iniţializarea tablourilor
La iniţializarea tabloului nu e numaidecît de indicat dimensiunile lui. De exemplu:
int x[]={1,3,15,7,19,11,13,5};
Alte exemple:
float vector[4]={1.2,34.57,81.9,100.77}; // vector – tablou din 4 elemente de tip float;
int digit[5]={1,2,3}; // digit – tablou de tip întreg din 5 numere, ultimelor două elemente li se
atribuie valoarea zero.
char m[5]={‘A’,’B’,’C’,’D’}; // m – tablou din 5 caractere, ultimul element are valoarea null-
caracter;
float const y[4]={25,26,17,18}; // iniţializarea tabloului y[4], elementele căruia sunt constante de
tip float şi nu pot fi schimbate în decursul îndeplinirii programului.
Iniţializarea tablourilor
Exemplu:
int x[20],n,i;
scanf("%d",&n);
for(i=0;i<n;i++){
printf("Culege elementul %d\n",i);
scanf("%d",&x[i]);
}
Iniţializarea tablourilor
Initializarea tabloului bidimensional:
int a[3][3]={ {1,4,2},
{7,5,3},
{8,6,9} };
sau int a[3][3]={ 1,4,2,7,5,3,8,6,9};

Ceia ce este echivalent cu:


a[0][0]=1; a[0][1]=4; a[0][2]=2; a[1][0]=7;
a[1][1]=5; a[1][2]=3; a[2][0]=8; a[2][1]=6; a[2][2]=9;
Iniţializarea tablourilor
Exemplu:
# include <stdio.h>
void main (void) {
char v[2][5] = { 'a', 'b', 'c', 'd', 'e',
'0', '1', '2', '3', '4' };
int i, j;
for (i = 0; i < 2; i++){
for(j = 0; j < 5; j++)
printf ("v[%d][%d] = %c", i, j, v[i][j]);
printf ("\n"); }
}
Iniţializarea tablourilor
Trei metode echivalente de iniţializare a masivului tridimensional:
int p[3][2][2]={ { {1,2},{3,4} }, { {5,6},{7,8} }, { {9,10},{11,12} } };

int p[3][2][2]={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12} };

int p[3][2][2]={1,2,3,4,5,6,7,8,9,10,11,12};
Şiruri de caractere
Numim şir o succesiune de caractere ale alfabetului.
Șirul de caractere poate fi conceput ca un vector de tip char:
void main(void) {
char a[20]; int i;
printf ("Culege numele");
for(i=0; i<20; i++)
scanf ("%c",a[i]);
printf("Numele dumneavoastra este:");
for(i=0; i<20; i++)
printf("%c",a[i]);
}
Şiruri de caractere
Notă: La declararea tabloului de tip char pentru descrierea unui şir se indică mărimea cu o celulă
mai mult de cît lungimea maximă presupusă a şirului din cauză că ultima celulă din tablou este
rezervată pentru simbolul null "/0".
Funcţii pentru prelucrarea şirurilor
Functia gets() si puts()
void main(void) {
int i; char name [15];
printf ("Culege numele:");
gets(name);
printf ("Numele dumnevoastra este:");
for (i=0; i<15; i++)
printf ("%C", name[i]);
}
Funcţii pentru prelucrarea şirurilor
void main (void) {
char name[15];
puts (" Culege numele");
gets (name);
puts ("Numele dvs este:");
puts (name);
}
Funcţii pentru prelucrarea şirurilor
Funcţia strcpy()
Apelul funcţiei strcpy() are următoarea formă generală:
strcpy (nume_sir, constanta_sir);
Funcţia strcpy() copiază conţinutul constantei_sir (inclusiv caracterul terminator '\n') în nume_sir.
Exemplu:
# include <string.h>
void main(void) {
char sir[80];
strcpy (sir, "hello");
printf("%s", sir); }
Funcţii pentru prelucrarea şirurilor
Funcţia strcat()
Apelul funcţiei strcat() are forma:
strcat (s1, s2);
Funcţia strcat() concatenează şirul s2 la sfârşitul şirului s1 şi întoarce şirul s1.
Exemplu:
# include <stdio.h>
# include <string.h>
void main(void) {
char first[20], second[10];
strcpy (first, "hello");
strcpy (second, "there");
strcat (first, second);
printf ("%s", first); }
Funcţii pentru prelucrarea şirurilor
Funcţia strcmp()
Se apelează sub forma: strcmp (s1, s2);
Această funcţie compară şirurile s1 şi s2 şi returnează valori negative, dacă s1 < s2, 0, dacă s1 = s2 şi un număr
pozitiv, dacă s1 > s2.
# include <stdio.h>
# include <string.h>
void main (void) {
char s[80];
printf ("Introduceti parola: ");
gets (s);
if (strcmp (s, "pasword"))
{
printf (" Invalid pasword \n ”);
return 0;
} return 1; }
Funcţii pentru prelucrarea şirurilor
Funcţia strlen()
Funcţia strlen() se apelează sub forma: strlen (s)
# incude <stdio.h>
# incude <string.h>
void main (void) {
char sir[80];
printf ("Introduceti un sir: ");
gets (sir);
printf ("Sirul %s contine %d caractere ", sir, strlen(sir));
}
Funcţii pentru prelucrarea şirurilor
Funcția toupper() - returnează litera mare corespunzătoare argumentului (literei mici).
# include <stdio.h>
# include <string.h>
void main (void) {
char sir[80];
int i;
strcpy (sir, "acesta este un test");
for(i = 0; sir[i]; i++) sir[i] = toupper (sir[i]);
printf("%s", sir);
}
Laborator
1. Fie avem notele a 9 studenți este nevoie să determinăm din această listă eminenții,
resanțierii și media generală.
Exerciții individuale
1. Să se definească un tablou unidimensional compus din 12 numere și să se determine
maximul și minimul din ele.
2. Să se definească lista a 10 studenti compusă din numele lor, printr-un tablou unidimensional
și să se afișeze rezultatul în consolă.
3. Declarați un tablou bidimensional de 2 randuri si 3 coloane, citiți și afișați elementele lui.

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