Teorie
Structurile în C++ sunt tipuri de date definite de utilizator, folosite pentru a grupa mai multe variabile (de tipuri diferite) sub un singur nume.
Există patru moduri principale de definire și utilizare a structurilor:
1. Struct clasic (definit și folosit ulterior)
struct Elev {
char nume[50];
int varsta;
};
int main() {
Elev e1;
}
2. Struct cu declararea variabilelor imediat după acoladă
struct Elev {
char nume[50];
int varsta;
} e1, e2;
3. Struct fără nume – se declară variabile direct, fără a denumi tipul.
struct {
char nume[50];
int varsta;
} e1, e2;
4. Struct cu typedef – se creează un alias pentru a simplifica utilizarea.
typedef struct {
char nume[50];
int varsta;
} Elev;
int main() {
Elev e1;
}
Exemple
Exemplul 1: Definirea unei structuri Elev cu nume și vârstă și afișarea datelor.
struct Elev {
char nume[50];
int varsta;
};
int main() {
Elev e;
cin >> e.nume >> e.varsta;
cout << e.nume << " " << e.varsta;
}
Exemplul 2: Declararea mai multor elevi imediat după structură.
struct Elev {
char nume[50];
int varsta;
} e1, e2;
int main() {
cin >> e1.nume >> e1.varsta;
cin >> e2.nume >> e2.varsta;
cout << e1.nume << " " << e2.nume;
}
Exemplul 3: Folosirea unei structuri fără nume.
struct {
char nume[50];
int varsta;
} e1;
int main() {
cin >> e1.nume >> e1.varsta;
cout << e1.nume << " " << e1.varsta;
}
Exemplul 4: Struct cu typedef pentru simplificarea codului.
typedef struct {
char nume[50];
int varsta;
} Elev;
int main() {
Elev e;
cin >> e.nume >> e.varsta;
cout << e.nume << " " << e.varsta;
}
Exemplul 5: Vector de structuri – citirea și afișarea datelor pentru mai mulți elevi.
struct Elev {
char nume[50];
int varsta;
};
int main() {
int n;
cin >> n;
Elev v[100];
for (int i = 0; i < n; i++) {
cin >> v[i].nume >> v[i].varsta;
}
for (int i = 0; i < n; i++) {
cout << v[i].nume << " " << v[i].varsta << "\\n";
}
}
Exerciții propuse
- Definiți o structură
Studentcu câmpurile: nume, grupă și medie. Citiți și afișați datele pentru un student. - Citiți datele pentru
nstudenți și afișați media generală a grupei. - Scrieți un program care determină studentul cu cea mai mare medie.
- Scrieți un program care determină studentul cu cea mai mică medie.
- Citiți datele pentru
nstudenți și afișați toți studenții care au media peste 8. - Definiți o structură
Cartecu titlu, autor și an_apariție. Citiți și afișați datele pentru o carte. - Citiți
ncărți și afișați toate cărțile publicate după anul 2000. - Citiți
nelevi și afișați-i ordonați alfabetic după nume. - Citiți
nelevi și afișați-i ordonați descrescător după medie. - Scrieți un program care determină numărul elevilor majori (≥18 ani).
- Definiți o structură
Angajatcu nume, funcție și salariu. Citiți și afișați datele. - Citiți
nangajați și determinați salariul mediu al firmei. - Citiți
nangajați și afișați angajatul cu salariul maxim. - Citiți
nangajați și afișați toți angajații cu salariu sub media firmei. - Definiți o structură
Complexcu parte reală și imaginară. Citiți două numere complexe și afișați suma lor.