Differences

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

Link to this comparison view

poo:laboratoare:07 [2017/11/06 14:13]
carmen.odubasteanu [Problema 2]
poo:laboratoare:07 [2019/11/06 08:01] (current)
mihai.nan [Problema 1]
Line 1: Line 1:
 ===== Laboratorul 07. ===== ===== Laboratorul 07. =====
 +Arhiva laborator: {{:​poo:​laboratoare:​arhiva7.zip| Arhiva}}
  
  
-  * Responsabil:​ [[adresa_email|Prenume Nume]]  + 
-  * Data publicării:​ XY.11.2017 +
-  * Data ultimei modificări:​ XY.11.2017 +
- +
 ==== Problema 1 ==== ==== Problema 1 ====
-Să se scrie un program pentru afișarea cuvintelor distincte dintr-un fișier text folosind clasa **//​TreeSet//​**. Fișierul va conține și cuvinte repetate (identice). Elementele mulțimii se vor afișa în ordine crescătoare (folosind ​metoda **//​printWords//​**) și în ordine descrescătoare (folosind ​metoda **//printWords//**), fără a apela o funcție de sortare, folosind două obiecte **//​TreeSet//​** construite diferit (cu și fără argument de tip **//​Comparator//​**). Se vor implementa 2 metode ce vor fi apelate din metoda **//​main//​**:​+Să se scrie un program pentru afișarea cuvintelor distincte dintr-un fișier text folosind clasa **//​TreeSet//​**. Fișierul va conține și cuvinte repetate (identice). ​ 
 +Elementele mulțimii se vor afișa în ordine crescătoare (metoda **//​printWords//​**) și în ordine descrescătoare (metoda **//printWordsComparator//** ), fără a apela o funcție de sortare, folosind două obiecte **//​TreeSet//​** construite diferit (cu și fără argument de tip **//​Comparator//​**). ​ 
 +Se vor implementa ​cele 2 metode ce vor fi apelate din metoda **//​main//​**:​
   * ''​public TreeSet printWords (String)''​ - va primi, ca argument, numele fișierului din care se citește și va folosi un obiect de tip **//​TreeSet//​**,​ instanțiat folosind constructorul fără argument de tip **//​Comparator//​**;​   * ''​public TreeSet printWords (String)''​ - va primi, ca argument, numele fișierului din care se citește și va folosi un obiect de tip **//​TreeSet//​**,​ instanțiat folosind constructorul fără argument de tip **//​Comparator//​**;​
-  * ''​public TreeSet printWordsComparator(TreeSet)''​ - va primi ca argument obiectul de tip **//​TreeSet//​**, ​ returnat de metoda anterioară,​ și va returna un alt obiect de tip **//​TreeSet//​**,​ stocând informațiile în ordine descrescătoare. În cazul instanțierii obiectului ce va fi returnat, folosiți constructorul cu  argument de tip **//​Comparator//​**!+  * ''​public TreeSet printWordsComparator(TreeSet)''​ - va primi ca argument obiectul de tip **//​TreeSet//​**, ​ returnat de metoda anterioară,​ și va construi si returna un alt obiect de tip **//​TreeSet//​**,​ stocând informațiile în ordine descrescătoare. ​ 
 +În cazul instanțierii obiectului ce va fi returnat, folosiți constructorul cu  argument de tip **//​Comparator//​**
 + 
 +Se poate folosi ca fisier de intrare fisierul test01.txt din arhiva
  
  
Line 39: Line 41:
 </​hidden>​ </​hidden>​
 ==== Problema 2 ==== ==== Problema 2 ====
-Să se definească o clasă **//​LinkedSet//​** pentru o mulțime realizată ca listă înlănțuită de elemente distincte. Clasa va implementa interfața ​**//Set//** și va extinde clasa **//LinkedList//**.+Să se definească o clasă **//​LinkedSet//​** pentru o mulțime realizată ca listă înlănțuită de elemente distincte. Clasa va extinde clasa **//LinkedList//**  și va implementa interfața ​**//Set//**.
  
 Se vor redefini cele două metode de adăugare și metoda de setare a unui obiect: Se vor redefini cele două metode de adăugare și metoda de setare a unui obiect:
Line 48: Line 50:
 Să se testeze clasa prin folosirea metodelor definite și afișare! Se poate folosi Test2.java din arhiva! Să se testeze clasa prin folosirea metodelor definite și afișare! Se poate folosi Test2.java din arhiva!
  
-==== Problema ​==== +==== Problema ​==== 
-Să se definească o clasă **//​SListSet//​** pentru o mulțime ordonată de obiecte, care implementează interfața ​**//SortedSet//** și extinde clasa **//LinkedList//**. Clasa va conține un obiect de tip **//​Comparator//​** și metodele:+Să se definească o clasă **//​SListSet//​** pentru o mulțime ordonată de obiecte, care extinde clasa **//LinkedList//** si implementează interfața ​**//SortedSet//**. Clasa va conține un obiect de tip **//​Comparator//​** și metodele:
  
 <note tip> <note tip>
Line 57: Line 59:
 Object first(); //primul obiect din multime Object first(); //primul obiect din multime
 Object last(); // ultimul obiect din multime Object last(); // ultimul obiect din multime
-SortedSet ​subset(Object from, Object to); // o submultime ordonata+SortedSet ​subSet(Object from, Object to); // o submultime ordonata
 SortedSet headSet(Object to); // o submultime cu primele ​ obiecte SortedSet headSet(Object to); // o submultime cu primele ​ obiecte
 SortedSet tailSet(Object from); //o submultime cu ultimele obiecte SortedSet tailSet(Object from); //o submultime cu ultimele obiecte
Line 64: Line 66:
 Se vor defini cel puțin doi constructori:​ fără argumente (sortare conform ordinii naturale) și cu un argument de tip **//​Comparator//​**. Se vor defini cel puțin doi constructori:​ fără argumente (sortare conform ordinii naturale) și cu un argument de tip **//​Comparator//​**.
 Să se folosească un obiect de tip **//​SListSet//​** pentru afișarea cuvintelor distincte dintr-un text citit dintr-un fișier text (//​test01.txt//​),​ în ordine crescătoare sau descrescătoare (în locul clasei **//​TreeSet//​** din problema 1).  Să se folosească un obiect de tip **//​SListSet//​** pentru afișarea cuvintelor distincte dintr-un text citit dintr-un fișier text (//​test01.txt//​),​ în ordine crescătoare sau descrescătoare (în locul clasei **//​TreeSet//​** din problema 1). 
 +
 +==== Problema 4 ====
 +Program pentru afișarea numerelor liniilor dintr-un fișier text în care apare fiecare cuvânt distinct. Se va folosi un dicționar cu liste de valori asociate fiecărei chei. Dicționarul va fi de tip **//​TreeMap//​**,​ iar listele vor fi de tip **//​LinkedList//​**.
 +
 +Pentru afisare se va folosi un Iterator pe multimea intrarilor din dictionar. La afișare, fiecare cuvânt va începe pe o linie nouă și va fi urmat, pe liniile următoare, de lista numerelor liniilor în care apare. Pentru fiecare cuvânt în parte se va afișa la sfârșit numărul de apariții al acestuia.
 +
 +Se poate folosi ca fisier de intrare tot fisierul test01.in din arhiva!
 + 
 +<note tip>
 +Map - //​**entrySet()**//​
 +
 +Set - //​**iterator()**//​
 +</​note>​
 +
  
 ==== Problema 5 ==== ==== Problema 5 ====
Line 71: Line 87:
  
 <note tip> <note tip>
-''​toArray''​ din ''​Collection''​ transformă colecția în ''​Object[]'';​+''​entrySet''​ din ''​Map''​ transformă colecția în ''​Set'' ​de intrari;
  
-''​Arrays.sort''​ sortează ​un astfel de vector ​după un criteriu definit.+''​Collections.sort''​ sortează ​o colectie ​după un criteriu definit.
 </​note>​ </​note>​
- 
-==== Problema 6 ==== 
-Program pentru afișarea numerelor liniilor dintr-un fișier text în care apare fiecare cuvânt distinct. Se va folosi un dicționar cu liste de valori asociate fiecărei chei. Dicționarul va fi de tip **//​TreeMap//​**,​ iar listele vor fi de tip **//​LinkedList//​**. 
- 
-La afișare, fiecare cuvânt va începe pe o linie nouă și va fi urmat, pe liniile următoare, de lista numerelor liniilor în care apare. Pentru fiecare cuvânt în parte se va afișa la sfârșit numărul de apariții al acestuia. 
- 
  
poo/laboratoare/07.1509970437.txt.gz · Last modified: 2017/11/06 14:13 by carmen.odubasteanu
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