Școala Româno-Britanică
Modulul 2 Clasa a X-a | C++

Proiectul Modulului 2 - Aplicație C++ de procesare a textului

Ce conține această pagină: Tema proiectului, cerințele pe niveluri de notă (5-6, 7-8, 9-10), criteriile de evaluare, regulile de susținere orală și termenul de predare

Rezultat practic: Construiești o aplicație C++ completă, care analizează un text citit de la tastatură, și o susții oral în fața profesorului.

Competențele modulului Săptămâna 13
SINTEZĂ TEORETICĂ ȘI EXEMPLE GHIDATE

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 și cerințele de bază
Cerințele pe niveluri de notă
Criteriile de evaluare
Regulile susținerii orale

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 și strcpy;
  • 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

Algoritm analizaText citește text dacă textul este gol atunci scrie "Text invalid" pentru fiecare caracter verifică validitatea (litere mici sau spații) numarCuvinte = numară cuvintele textului lung = cel mai lung cuvânt frec[26] = frecvența literelor cuvinte[] = separă și sortează cuvintele scrie raportul complet Sfârșit algoritm

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).
CRITERII DE EVALUARE

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ă.

REGULI IMPORTANTE

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.

Scrie pe caiet - Proiectul modulului

Tema proiectului

Algoritmul cheie - pseudocod

Algoritm analizaText citește text validează textul (nevid, litere mici și spații) numarCuvinte = numărarea cuvintelor lung = cel mai lung cuvânt frec[26] = frecvența literelor cuvinte[] = separare și sortare lexicografică scrie raportul complet Sfârșit algoritm

Algoritmul cheie - cod C++

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    char text[1001];
    cin.getline(text, 1001);

    // Nivelul 1: numararea cuvintelor si cel mai lung cuvant
    int cuvinte = 0;
    int maxim = 0;
    char *p = strtok(text, " ");

    while (p != NULL)
    {
        cuvinte++;
        if (strlen(p) > maxim)
        {
            maxim = strlen(p);
        }
        p = strtok(NULL, " ");
    }

    cout << "Numar de cuvinte: " << cuvinte << endl;
    cout << "Cea mai lunga secventa de litere: "
         << maxim << " caractere" << endl;

    return 0;
}

Greșeli comune de evitat

Sfaturi practice și trucuri