Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sd-ca:laboratoare:laborator-07 [2015/04/17 12:21]
razvan_madalin.matei [Bibliografie]
sd-ca:laboratoare:laborator-07 [2015/05/09 16:47] (current)
cosmin_ioan.petrisor [Exerciţii]
Line 134: Line 134:
 2) [**1p**] Testați implementarea voastră folosind un cod simplist. 2) [**1p**] Testați implementarea voastră folosind un cod simplist.
  
-3) [**3p**] Considerăm o aplicație simplistă de tip instant messenger. Utilizatorii se pot autentifica în sistem (devin activi), pot părăsi sistemul (devin inactivi) sau pot trimite mesaje între ei. Înainte de trimiterea unui mesaj, aplicația client lansează o cerere către server pentru a afla dacă utilizatorul către care se trimite mesajul este online sau nu. Serverul menține o listă a tuturor clienților activi și va trebui să răspundă tuturor cererilor. 
-Voi va trebui să implementați această funcționalitate. 
- 
-Serverul va avea de tratat următoarele scenarii: 
- 
-   * ''​0 username''​ - Utilizatorul ''​username''​ s-a autentificat (devine activ) 
-   * ''​1 username''​ - Utilizatorul ''​username''​ s-a deconectat (devine inactiv) 
-   * ''​2 username''​ - Cerere de la un client: 'Este utilizatorul ''​username''​ activ?'​ 
- 
-Pentru fiecare cerere, se va afişa pe ecran TRUE sau FALSE dacă utilizatorul este sau nu online. 
- 
-<code txt Date de intrare> 
-0 mariap 
-0 georgeta 
-2 mariap 
-2 florint 
-1 mariap 
-2 mariap 
-</​code>​ 
- 
-<code txt Date de ieşire> 
-TRUE 
-FALSE 
-FALSE 
-</​code>​ 
- 
-**Schelet de cod**: {{ sd-ca:​laboratoare:​lab06_schelet_cod.zip }} 
- 
-Paşi de rezolvare (urmăriţi TODO-urile din schelet): 
-   * [**1p**] TODO 1: implementare clasa String 
-   * [**0.5p**] TODO 2: definiţi funcţia hash pentru clasa String 
-   * [**1.5p**] TODO 3: rezolvaţi problema folosind un Hashtable cu cheie de tip String. 
- 
-4) [**Bonus 1p**] Implementați și testați redimensionarea unui hashtable: funcția **resize()** dublează dimensiunea structurii interne a tabelei de dispersie. Dublarea se va face în momentul în care raportul dintre numărul de elemente introduse în hashtable **size** şi numărul de bucket-uri **HMAX** este mai mare decât o valoare aleasă (**size** / **HMAX** > 0.75). Comportamentul dorit pentru această funcţionalitate este următorul: se redimensionează array-ul de bucket-uri, iar apoi fiecare bucket este parcus în ordine și elementele sunt redistribuite după valoarea noului hash. 
 <​hidden>​ <​hidden>​
 3) [**3p**] Să se scrie un program care citește, interpretează și afișează rezultatul fiecărei instrucțiuni de atribuire dintr-un fișier text. Fiecare linie conține numai o instrucțiune de atribuire (considerată corectă din punct de vedere sintactic) care are în stânga o variabilă și în dreapta o constantă numerică sau o variabilă. Dacă în dreapta este o variabilă neinițializată (care nu a fost în stânga unei atribuiri anterioare) atunci se afișează un mesaj în locul rezultatului atribuirii. 3) [**3p**] Să se scrie un program care citește, interpretează și afișează rezultatul fiecărei instrucțiuni de atribuire dintr-un fișier text. Fiecare linie conține numai o instrucțiune de atribuire (considerată corectă din punct de vedere sintactic) care are în stânga o variabilă și în dreapta o constantă numerică sau o variabilă. Dacă în dreapta este o variabilă neinițializată (care nu a fost în stânga unei atribuiri anterioare) atunci se afișează un mesaj în locul rezultatului atribuirii.
sd-ca/laboratoare/laborator-07.txt · Last modified: 2015/05/09 16:47 by cosmin_ioan.petrisor
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0