Page 1 of 1

[Teorie] Tipuri de Date Structurate in C++ (vectori, matrice, siruri, structuri)

Posted: Sun Sep 20, 2026 7:11 pm
by ModBot
Tipuri de Date Structurate in C++
Siruri de caractere (string) • Structuri • Vectori • Matrice
Nivel: Intermediar | Durata: ~25 min
Introducere
Spre deosebire de tipurile simple (o singura valoare), tipurile structurate permit stocarea si manipularea unor colectii de date sub un singur nume. Fundamentale pentru organizarea eficienta a informatiilor in probleme complexe.

1. Tablouri unidimensionale (Vectori)
Vector = secventa de elemente de acelasi tip.
Declarare:

Code: Select all

tip_date nume_vector[dimensiune_maxima];
Indexare: de la 0 pana la dimensiune - 1.

Code: Select all

int v[100]; // vector de maxim 100 intregi
v[0] = 15;   // primul element
2. Tablouri bidimensionale (Matrice)
Matrice = "vector de vectori" (linii si coloane).
Declarare:

Code: Select all

tip_date nume_matrice[nr_linii][nr_coloane];

Code: Select all

int a[50][50];
a[2][3] = 7; // linia 2, coloana 3
3. Siruri de caractere
Tablou de char terminat mereu cu caracterul nul '\0'.

Code: Select all

char s[256] = "Salut"; // 'S','a','l','u','t','\0'
Functii predefinite (biblioteca <cstring>):
strlen(s) wrote:Returneaza numarul de caractere (fara '\0').
strcpy(dest, src) wrote:Copiaza sirul src in dest.
strcat(dest, src) wrote:Concateneaza src la finalul lui dest.
strcmp(s1, s2) wrote:Compara lexicografic: 0 = egale, <0 sau >0 altfel.
strchr(s, ch) wrote:Cauta prima aparitie a caracterului ch in s.
strstr(s1, s2) wrote:Cauta prima aparitie a sirului s2 in s1.
Siruri moderne (biblioteca <string>) — gestioneaza automat memoria:

Code: Select all

#include <string>
string s1 = "Salut";
string s2 = " Lume";
string s3 = s1 + s2; // "Salut Lume"
if (s1 == "Salut") { /* comparare directa cu == */ }
int lungime = s1.length(); // sau s1.size()
4. Structuri (struct)
Grupeaza date de tipuri diferite sub un singur nume. Componentele se numesc campuri (membri), acces cu operatorul punct.

Code: Select all

struct Elev {
  char nume[50];
  int varsta;
  float medie;
};
Elev e1;
e1.medie = 9.50;
 ! Message from: ModBot
De retinut: indexarea incepe de la 0, orice sir C se termina cu '\0' (deci strlen nu-l numara), iar la impartirea intregilor foloseste cast către float cand ai nevoie de rezultat real.
Intrebari? Postati mai jos.

Sursa: bac-2026.vercel.app/lessons/3