🏆

PROIECT FINAL: Catalog Note Elevi

Aplica tot ce ai invatat despre tablouri!

OBIECTIV

Ce vei crea?

Vei crea un program complet pentru gestionarea notelor unei clase de elevi. Programul va citi note, le va afisa, va cauta note specifice, va gasi maximul si minimul, si le va sorta!

Exemplu de rulare:
=== CATALOG NOTE ELEVI ===

Cati elevi sunt in clasa? 5
Nota elevului 1: 8
Nota elevului 2: 10
Nota elevului 3: 6
Nota elevului 4: 9
Nota elevului 5: 7

--- STATISTICI ---
Notele introduse: 8 10 6 9 7
Suma notelor: 40
Media clasei: 8.00
Nota maxima: 10 (elevul 2)
Nota minima: 6 (elevul 3)

Cauta o nota: 10
Nota 10 exista! (elevul 2)

Note sortate crescator: 6 7 8 9 10
Note sortate descrescator: 10 9 8 7 6
CERINTE

Ce trebuie sa faca programul?

1
Citeste notele - Intreaba cati elevi sunt, apoi citeste nota fiecaruia
2
Afiseaza toate notele - Parcurge tabloul si afiseaza fiecare nota
3
Calculeaza suma si media - Aduna toate notele si imparte la numarul de elevi
4
Gaseste nota maxima - Cu algoritmul invatat, afiseaza si pozitia (numarul elevului)
5
Gaseste nota minima - Cu algoritmul invatat, afiseaza si pozitia
6
Cauta o nota - Intreaba utilizatorul ce nota cauta si spune daca exista
7
Sorteaza notele - Afiseaza notele sortate crescator si descrescator
COD

Solutia completa

Sfaturi pentru rezolvare:
  • Incepe prin a scrie citirea si afisarea - testeaza ca functioneaza
  • Adauga apoi suma si media - testeaza din nou
  • Continua cu maxim/minim, cautare, sortare
  • Foloseste comentarii pentru a-ti organiza codul
Programul complet:
#include <iostream> #include <iomanip> // pentru setprecision using namespace std; int main() { int note[100]; // tabloul pentru note int n; // numarul de elevi cout << "=== CATALOG NOTE ELEVI ===" << endl << endl; // ===== 1. CITIREA NOTELOR ===== cout << "Cati elevi sunt in clasa? "; cin >> n; for(int i = 0; i < n; i++) { cout << "Nota elevului " << i + 1 << ": "; cin >> note[i]; } cout << endl << "--- STATISTICI ---" << endl; // ===== 2. AFISAREA NOTELOR ===== cout << "Notele introduse: "; for(int i = 0; i < n; i++) { cout << note[i] << " "; } cout << endl; // ===== 3. SUMA SI MEDIA ===== int suma = 0; for(int i = 0; i < n; i++) { suma += note[i]; } float media = (float)suma / n; cout << "Suma notelor: " << suma << endl; cout << "Media clasei: " << fixed << setprecision(2) << media << endl; // ===== 4. NOTA MAXIMA ===== int maxim = note[0]; int pozMax = 0; for(int i = 1; i < n; i++) { if(note[i] > maxim) { maxim = note[i]; pozMax = i; } } cout << "Nota maxima: " << maxim << " (elevul " << pozMax + 1 << ")" << endl; // ===== 5. NOTA MINIMA ===== int minim = note[0]; int pozMin = 0; for(int i = 1; i < n; i++) { if(note[i] < minim) { minim = note[i]; pozMin = i; } } cout << "Nota minima: " << minim << " (elevul " << pozMin + 1 << ")" << endl; // ===== 6. CAUTAREA UNEI NOTE ===== int cautat; cout << endl << "Cauta o nota: "; cin >> cautat; bool gasit = false; for(int i = 0; i < n; i++) { if(note[i] == cautat) { cout << "Nota " << cautat << " exista! (elevul " << i + 1 << ")" << endl; gasit = true; } } if(!gasit) { cout << "Nota " << cautat << " nu exista in catalog." << endl; } // ===== 7. SORTARE ===== // Cream o copie pentru sortare (sa nu pierdem originalul) int copie[100]; for(int i = 0; i < n; i++) { copie[i] = note[i]; } // Sortare crescatoare (Bubble Sort) for(int i = 0; i < n - 1; i++) { for(int j = 0; j < n - i - 1; j++) { if(copie[j] > copie[j+1]) { int aux = copie[j]; copie[j] = copie[j+1]; copie[j+1] = aux; } } } cout << endl << "Note sortate crescator: "; for(int i = 0; i < n; i++) { cout << copie[i] << " "; } cout << endl; // Sortare descrescatoare for(int i = 0; i < n - 1; i++) { for(int j = 0; j < n - i - 1; j++) { if(copie[j] < copie[j+1]) { int aux = copie[j]; copie[j] = copie[j+1]; copie[j+1] = aux; } } } cout << "Note sortate descrescator: "; for(int i = 0; i < n; i++) { cout << copie[i] << " "; } cout << endl; return 0; }
BONUS

Extinde proiectul (optional)

Ai terminat cerintele de baza? Incearca aceste extensii pentru puncte bonus!

Numara notele de 10

Cate note de 10 sunt in catalog?

+15 XP
Elevi promovati

Cati elevi au nota >= 5?

+15 XP
Nota care apare cel mai des

Care nota se repeta cel mai mult?

+25 XP
Meniu interactiv

Lasa utilizatorul sa aleaga ce vrea sa faca

+30 XP
Lista de verificare - Ai facut totul?
Programul citeste numarul de elevi si notele
Afiseaza toate notele introduse
Calculeaza si afiseaza suma si media
Gaseste si afiseaza nota maxima cu pozitia
Gaseste si afiseaza nota minima cu pozitia
Permite cautarea unei note
Sorteaza si afiseaza notele crescator
Sorteaza si afiseaza notele descrescator
Codul este curat si are comentarii
🎉

Felicitari! Ai terminat Modulul 2!

Ai invatat despre tablouri, parcurgere, cautare, maxim/minim si sortare!

+300 XP TOTAL

Aceste concepte sunt fundamentale in programare si le vei folosi mereu!

Inapoi la modulul 2 Alege alt modul