Descrierea temei
Realizează o aplicație C++ care permite gestionarea unei mulțimi de valori naturale (valori între 1 și 100) cu operații complete: introducerea valorilor, afișarea mulțimii sortate, reuniunea, intersecția, diferența, testul de apartenență, verificarea incluziunii și a egalității cu o a doua mulțime.
Structura recomandată a programului
- citirea primei mulțimi A (n și n valori) și marcarea cu vector de prezență
- citirea celei de-a doua mulțimi B (m și m valori)
- afișarea fiecărei mulțimi sortate
- afișarea reuniunii, intersecției și diferenței A - B, sortate
- testul de apartenență pentru o valoare x citită de la tastatură
- verificarea incluziunii A ⊆ B și a egalității A = B
Cerințe pe niveluri de note
Nota 5-6: Funcționalitate de bază
- programul citește corect n și n valori, apoi m și m valori
- marchează elementele în vectori de prezență
- afișează fiecare mulțime sortată crescător
- afișează reuniunea A ∪ B sortată
Nota 7-8: Validări + toate operațiile
- toate cerințele de la nota 5-6, realizate corect
- validarea valorilor citite (1 ≤ valoare ≤ 100, n ≤ 100); la date invalide se afișează un mesaj și se reia citirea
- afișarea intersecției A ∩ B și a diferenței A - B, sortate
- testul de apartenență x ∈ A pentru o valoare citită
- afișările sunt etichetate clar (exemplu: "Reuniune:", "Intersectie:", "Diferenta A - B:")
Nota 9-10: Modularizare, eficiență, documentație
- toate cerințele de la nota 7-8, realizate corect
- modularizare cu funcții: câte o funcție pentru citire, afișare, reuniune, intersecție, diferență, apartenență, incluziune, egalitate
- verificarea incluziunii A ⊆ B și a egalității A = B cu steag boolean
- eficiență: algoritmi pe vectori de prezență, O(n + V), fără parcurgeri inutile
- documentație: comentarii semnificative în cod și un scurt raport scris (enunț, proiectarea algoritmilor în pseudocod, exemple de rulare, concluzii)
Regulă anti-AI - Susținere orală obligatorie
Nota se acordă DOAR în urma susținerii orale în fața profesorului, unde elevul explică codul linie cu linie și răspunde la întrebări despre funcționarea programului.
Prezentarea orală durează aproximativ un sfert de oră și include:
- explicarea fiecărei structuri de date și a fiecărei funcții din program
- demonstrarea programului pe cel puțin două exemple proprii
- răspunsuri la întrebări despre alegerea algoritmilor și despre posibile modificări
Un cod care nu poate fi explicat de autor nu primește punctaj, indiferent de cât de corect funcționează.
Criterii de notare
| Criteriul | Pondere | Ce se verifică |
|---|---|---|
| Corectitudinea funcțională | 40% | programul compilează și produce rezultate corecte pe toate exemplele |
| Completitudinea cerințelor | 25% | sunt realizate toate cerințele nivelului de notă vizat |
| Calitatea codului | 20% | modularizare, nume sugestive, comentarii, eficiență |
| Susținerea orală | 15% | explicarea codului linie cu linie și răspunsurile la întrebări |
Termen și condiții de predare
- Termen: data stabilită de profesor în clasă; proiectele predate după termen pierd un punct.
- Forma de predare: fișier sursă .cpp (denumit
proiect_modul1.cpp) plus raportul scris pentru nota 9-10, trimise prin platforma clasei. - Lucru individual: fiecare elev prezintă propriul program; programele identice sau asemănătoare suspect de mult nu primesc punctaj.
- Evaluare: notarea are loc în timpul susținerii orale, conform baremului de mai sus.
Sfat: începe de la cerințele de nota 5-6, testează programul pe exemple mici, apoi adaugă treptat validările, operațiile rămase și funcțiile. Revizuiește sinteza modulului înainte de a începe.