Despre proiect
Proiectul încheie modulul 2 și îți cere să aplici toate tehnicile învățate: parcurgerea șirurilor, funcțiile din <cstring>, conversiile, palindromul, separarea cuvintelor și dicționarul cu tablouri paralele.
Tema proiectului
Tema: Scrie o aplicație C++ de procesare a textului care citește un text de la tastatură (o propoziție sau un paragraf, cu litere mici și spații) și realizează următoarele analize:
- Numărarea cuvintelor din text;
- Frecvența literelor din text (câte apariții are fiecare literă);
- Cel mai lung cuvânt din text;
- Sortarea cuvintelor în ordine lexicografică (alfabetică).
Programul va afișa un raport clar, cu fiecare rezultat pe câte o linie sau în secțiuni etichetate.
Analogia: analistul de texte
Aplicația ta funcționează ca un analist de texte: primește un text oarecare și produce o statistică completă — câte cuvinte, care literă domină, care este cuvântul cel mai lung și cum se ordonează cuvintele alfabetic. Exact astfel de instrumente stau la baza motoarelor de căutare și a verificatoarelor ortografice.
Cerințele pe niveluri de notă
Proiectul se evaluează pe trei niveluri de complexitate. Poți alege nivelul țintă, dar programul trebuie să respecte toate cerințele nivelului ales, plus cele ale nivelurilor inferioare.
| Nivel | Cerințe | Nota maximă |
|---|---|---|
| Nivelul 1 | citește textul cu cin.getline; numără cuvintele; determină și afișează cel mai lung cuvânt; afișează raportul |
Nota 6 |
| Nivelul 2 | validări (text nevid, doar litere mici și spații); frecvența literelor cu dicționar pe 26 de poziții; afișarea literelor în ordinea apariției | Nota 8 |
| Nivelul 3 | modularizare cu funcții; sortarea cuvintelor lexicografic (cu strcmp și strcpy); dicționar de cuvinte cu tablouri paralele; documentație scrisă |
Nota 10 |
Reține: nivelul 3 presupune și funcționalitatea nivelurilor 1 și 2. Un program cu toate funcțiile, dar fără validări, nu depășește nota 6.
Detalierea cerințelor pe niveluri
Nivelul 1 - funcționalitate de bază (Nota 5-6)
- Citește textul de la tastatură cu
cin.getline; - Numără cuvintele textului (separate prin câte un spațiu);
- Determină și afișează cel mai lung cuvânt și lungimea lui;
- Afișează un raport clar, etichetat.
Nivelul 2 - validări și prelucrări suplimentare (Nota 7-8)
- Validează textul: nu este vid și conține doar litere mici și spații (altfel afișează un mesaj de eroare);
- Numără și afișează frecvența fiecărei litere (tablou cu 26 de poziții);
- Afișează litera cea mai frecventă;
- Tratează spațiile multiple dintre cuvinte.
Nivelul 3 - modularizare, dicționar și documentație (Nota 9-10)
- Împarte programul în funcții (numără cuvinte, frecvență litere, cel mai lung cuvânt, sortare);
- Construiește dicționarul de cuvinte cu tablouri paralele (fiecare cuvânt + frecvența lui);
- Sortarea cuvintelor în ordine lexicografică, cu
strcmpșistrcpy; - Scrie documentația proiectului: descrierea programului, pseudocodul algoritmilor, exemple de rulare.
Exemplu de rulare a proiectului
Pentru textul „ana are ana si ana are mere"
- Numărul de cuvinte: 7
- Cel mai lung cuvânt: mere (4 litere)
- Litera cea mai frecventă: a (8 apariții)
- Cuvintele în ordine alfabetică: ana ana ana are are mere si
Observă: la afișarea cuvintelor sortate, fiecare cuvânt poate apărea de mai multe ori; un dicționar complet afișează fiecare cuvânt o singură dată, cu frecvența lui.
Structura recomandată a programului
Recomandare: la nivelul 3, fiecare pas de mai sus devine o funcție separată; main doar orchestrează apelurile și afișarea.
Aprofundare - idei de extindere
Extinderi opționale care aduc puncte în plus:
- Verificarea dacă textul conține cuvinte palindrom și numărarea lor (ora 8);
- Procentul de apariție al fiecărei litere, cu
double(ora 12); - Eliminarea spațiilor multiple înainte de analiză (ora 11);
- Afișarea cuvintelor în ordine inversă (ora 13);
- Meniu interactiv: utilizatorul alege ce analiză rulează (citire repetată cu
cin.ignore).
Criteriile de notare
Baremul proiectului:
- Funcționalitatea programului (rulează corect pe exemplele date): 40 de puncte;
- Corectitudinea codului (acolade echilibrate,
int main, biblioteci incluse, fără erori de compilare): 20 de puncte; - Respectarea cerințelor nivelului ales (validări, funcții, dicționar, sortare): 20 de puncte;
- Susținerea orală (explicarea codului linie cu linie, răspunsuri la întrebări): 20 de puncte.
Termenul de predare:
Proiectul se predă în săptămâna 14, în format electronic (fișier .cpp) și pe hârtie (documentația), conform calendarului anunțat în clasă.
Forma de predare:
Fișierul sursă proiect_modul2.cpp, documentația scrisă (maximum 2 pagini: descriere, pseudocod, exemple de rulare) și susținerea orală.
Regulile proiectului
Reguli de predare și susținere
Citește cu atenție regulile înainte de a începe proiectul
Regula anti-AI - 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. Un program care nu poate fi explicat de autor nu primește punctaj, indiferent de corectitudinea lui. Copierea de pe internet, de la colegi sau generarea integrală cu ajutorul inteligenței artificiale, fără înțelegerea codului, duce la nota 1.
Reguli de lucru
Cerințe: programul trebuie să fie scris în stilul BAC (#include <iostream>, #include <cstring>, using namespace std;, int main()); codul este comentat pe pași logici; numele variabilelor sunt sugestive.
Interzis: folosirea de librării externe sau de funcții neînvățate la clasă fără a le putea explica; copierea parțială sau integrală a codului altcuiva.
Recomandări pentru nota maximă
Sfaturi: începe de la nivelul 1 și adaugă funcționalități pas cu pas; testează programul pe cel puțin trei texte diferite; scrie pseudocodul înaintea codului; exersează explicația orală a fiecărei bucle și a fiecărei condiții.