Table of Contents

Tema 2

Responsabili

Depunctare întârziere după depășirea deadline-ului soft: -10p/zi

Deadline soft: 25 aprilie, ora 23:55

Deadline hard: 28 aprilie, ora 23:55

Modificări și actualizări

Obiective

În urma realizării acestei teme studentul:

Gigel este absolvent al Facultăii de Automatică si Calculatoare. Înca de la primul laborator de USO Gigel folosește editorul vim, în mare parte pentru că nu știe cum să iasă din el. Acum că a absolvit, Gigel s-a gândit că e momentul să-și implementeze singur propriul editor. Însa cum acesta nu are destulă experiența cu editoarele, s-a lovit de cateva probleme.

Motivație

Gigel s-a pus pe lucru si in scurt timp a scris interfata cu utilizatorul pentru editorul sau. Si-a dat seama insa ca functionalitatile editorului sunt mai greu de implementat decat credea, asa ca a decis ca are nevoie de ajutorul unor profesionisti. Ca sa fie sigur, Gigel s-a decis sa ceara tuturor studentilor sa implementeze cate o versiune a functionalitatilor.

Astfel, editorul text se alcatuieste din partea scrisa de Gigel - care reprezinta interfata cu utilizatorul (front-end) - si partea scrisa de fiecare student in parte - care reprezinta functionalitatile (back-end). Astfel ca, fiecare dintre voi, are de implementat doar functionalitatea efectiva a editorului de text (operatiile cut, copy, paste, undo, redo, add, getText).

Cum funcționează

Editorul lui Gigel este special. Din motive de simplitate (sau plictiseala) tanarul absolvent s-a gandit ca ar fi o idee buna daca editorul sau ar avea ca unitate de baza cuvantul si nu litera. Asta inseamna ca cea mai mica unitate pe care o poti adauga sau sterge este un cuvant.

Cuvantul se defineste ca fiind orice insiruire de caractere alfanumerice (fara orice fel de caractere speciale) urmate de un spatiu. Astfel, odata adaugat un cuvant acesta nu mai poate fi modificat, doar sters.

Intrucat comportamentul editorului sau nu este mereu cel mai intuitiv, Gigel s-a gandit ca este bine sa aiba specificatii mai clare legate de implementarea back-end-ului.

Interfata bibliotecii

Schelet de cod

Schelet

Precizari:

Cerințe

Sa se implementeze o biblioteca shared object care sa expuna un obiect ce contine functiile prezentate. Un schelet de cod de la care sa plecati este disponibil in arhiva, in directorul backend_src.

Scopul temei este acela de a implementa functionalitatile bibliotecii.

Indicatii de implementare

Teste publice

Checker

Reguli pentru trimitere

Temele vor trebui trimise pe vmchecker. Atenție! Temele trebuie trimise în secțiunea Structuri de Date (CA).

Arhiva trebuie să conțină:

Punctaj

Coding style-ul trebuie sa fie consistent și ușor de citit. Ca ghid vă recomandăm:

sau

Citiți cu atenție Regulamentul General de Trimitere a Temelor.

Nu copiați! Toate soluțiile vor fi verificate folosind o unealtă de detectare a plagiatului. În cazul detectării unui astfel de caz, atât plagiatorul cât și autorul original (nu contează cine care e) vor primi punctaj 0 pe temele incepand de la prima si aceasta inclusiv. Heed my warning!

De aceea, vă sfătuim să nu vă lăsați rezolvări ale temelor pe calculatoare partajate (la laborator etc), pe mail/liste de discuții/grupuri etc.

FAQ

Q: Se poate folosi STL?

A: Se poate folosi clasa string din STL. Folosirea oricărei alte clase din STL nu este permisă

Resurse

C++ Tutorial