Citiți cu atenție cerințele și completați codul C/C++ în spațiile libere.
Partea I: Definire și Sintaxă
1. Definirea structurii Carte
Definiți structura astfel încât membrul autor să fie un șir de caractere capabil să memoreze un nume de maxim 30 de litere (atenție la terminatorul null!), iar membrul pret să fie un număr real. De asemenea, numiți membrul întreg pentru pagini: nr_pagini.
struct Carte { char titlu[51]; char autor[];
pret; int ;
};
2. Declararea variabilelor
În funcția main, declarați o variabilă c1 de tip Carte și o a doua variabilă numită c2 tot de tip Carte.
int main() {
c1;
Carte ; return 0;
}
3. Accesare membri
Folosind operatorul corect de acces la membri, atribuiți valoarea 45.5 câmpului pret și valoarea 300 câmpului nr_pagini pentru variabila c1.
c1 = 45.5;
c1 = 300;
4. Citire text cu spații
Citiți titlul cărții c2. Completați parametrii necesari (unde citim și dimensiunea maximă, conform definiției de la problema 1).
cin.getline(, );
5. Copierea structurilor
Copiați toate informațiile din variabila c1 în variabila c2 printr-o singură instrucțiune de atribuire.
c2 = ;
Partea II: Structuri Imbricate
Info: Structura Data
Această structură este deja definită pentru exercițiile următoare:
struct Data { int zi, luna, an; };
7. Definirea structurii Medicament
Definiți câmpul data_expirarii folosind tipul structurii Data definită mai sus.
Completați condiția if pentru a verifica dacă anul expirării medicamentului m este 2026.
if (m . . == 2026) { ... }
9. Citire imbricată
Scrieți instrucțiunea pentru a citi de la tastatură luna expirării pentru medicamentul m.
cin >> m . . ;
Partea III: Geometrie
10. Definire Punct
Definiți coordonatele x și y ca numere reale.
struct Punct {
x;
y;
};
11. Logică: Cadranul 1
Scrieți întreaga expresie logică dintre paranteze. Un punct este în Cadranul 1 dacă ambele coordonate (x și y) sunt strict pozitive.
if () {
cout << "Cadran 1";
}
13. Structura Dreptunghi
Definiți membrul dreapta_jos folosind tipul de date creat anterior (Punct).
struct Dreptunghi {
Punct stanga_sus;
dreapta_jos;
};
14. Calcule cu structuri
Scrieți formula completă (membrul drept al atribuirii) pentru a calcula lățimea dreptunghiului d
Lățimea = abscisa punctului din dreapta - abscisa punctului din stânga.
float latime = ;
Partea IV: Vectori de Structuri
Context: Vectorul de Gimnaști
Se dă: struct Gimnast { char nume[20]; float nota_executie, nota_dificultate; }; și Gimnast lot[100];
15. Calcul Notă Finală
Afișați suma dintre nota_executie și nota_dificultate pentru gimnastul de pe poziția i.
cout << lot[i].nota_executie + ;
16. Modificare valori în vector
Dacă nota de execuție este sub 7, aceasta trebuie micșorată cu 0.5. Scrieți instrucțiunea completă de atribuire în interiorul if-ului (inclusiv punct și virgulă).
if (lot[i].nota_executie < 7) {
}
17. Algoritm de Maxim
Căutăm gimnastul care a efectuat exercițiul cu cea mai mare dificultate. Completați accesul la membrul nota_dificultate în if, apoi salvați indexul, și la final folosiți indexul pentru a afișa numele.
for(int i = 0; i < n; i++) { if (lot[i]. > max_dif) {
max_dif = lot[i].nota_dificultate;
index_max = ;
}
}
cout << lot[].nume;
Partea V: Quiz
18. Atribuire
Se dă codul: a.x=10; b=a; b.x=50;.
Ce valoare are a.x la final? (Structurile se copiază prin valoare).
Răspuns:
19. Funcție comparare șiruri
Ce funcție din biblioteca <cstring> folosim pentru a compara alfabetic două nume? (Returnează < 0 dacă primul e mai mic).
if ((lot[i].nume, lot[i+1].nume) < 0)
20. Definire struct
Definiți o structură Elev care are un vector de 3 note (întregi), numit simplu "note".
struct Elev { char nume[20]; int [];
};
21. Atribuire Șiruri de Caractere
Nu putem scrie e.nume = "Ana";. Ce funcție folosim pentru a copia textul "Ana" în membrul nume al variabilei e?
(e.nume, "Ana");
22. Pointeri la Structuri
Avem un pointer Gimnast *p = &g1;. Completați operatorul special ("arrow operator") pentru a accesa membrul nota_executie prin intermediul pointerului.
cout << p nota_executie;
23. Inițializare la declarare
Se dă: struct Punct {int x, y;}; și declarația Punct p = {2, 7};.
Ce valoare se va afișa pentru p.y?
cout << p.y; // Afișează:
24. Memorie ocupată
Ce operator folosim pentru a afla câți octeți ocupă o structură în memorie? (Scrieți doar numele operatorului).
cout << (Carte);
25. Sortare (Swap)
Dacă vrem să sortăm vectorul lot de tip Gimnast, avem nevoie de o variabilă auxiliară pentru interschimbare (swap). Ce tip de date trebuie să aibă variabila aux?