This shows you the differences between two versions of the page.
poo:laboratoare:03 [2020/10/20 09:06] carmen.odubasteanu |
poo:laboratoare:03 [2025/10/18 12:00] (current) carmen.odubasteanu [Problema 6] |
||
---|---|---|---|
Line 3: | Line 3: | ||
====Problema 1==== | ====Problema 1==== | ||
Definiți o clasă **//Fractie//** care modelează lucrul cu fracțiile. Membrii acestei clase sunt: | Definiți o clasă **//Fractie//** care modelează lucrul cu fracțiile. Membrii acestei clase sunt: | ||
- | * două atribuite de tip **//double//** pentru numărătorul fracției, respectiv numitorul ei; | + | * două atribuite de tip **//int//** pentru numărătorul fracției, respectiv numitorul ei; |
- | * constructorul cu doi parametri de tip //**double**//, pentru setarea celor două parți ale fracției (numărător și numitor); | + | * constructorul cu doi parametri de tip //**int**//, pentru setarea celor două parți ale fracției (numărător și numitor); |
* un constructor fără parametri care apelează constructorul anterior; | * un constructor fără parametri care apelează constructorul anterior; | ||
* o metodă, cu un **singur** parametru, de calcul a sumei a două fracții; | * o metodă, cu un **singur** parametru, de calcul a sumei a două fracții; | ||
Line 32: | Line 32: | ||
Să se definească o clasă **//MyQueue//** care să descrie o structură de date de tip coadă. | Să se definească o clasă **//MyQueue//** care să descrie o structură de date de tip coadă. | ||
Datele clasei (private): | Datele clasei (private): | ||
- | * un obiect de tip **//MyArray//** (clasa inclusă în arhiva laboratorului); | + | * un obiect de tip **//MyArray//** (clasa data mai jos); |
* o constantă (//**Infinit**//) având valoarea $9500$; | * o constantă (//**Infinit**//) având valoarea $9500$; | ||
* indicele primului element din coadă; | * indicele primului element din coadă; | ||
Line 126: | Line 126: | ||
====Problema 5==== | ====Problema 5==== | ||
+ | Implementați clasa **//Punct//** care definește un punct din spațiul 2D. | ||
+ | |||
+ | **Datele clasei (private):** | ||
+ | * două nr. întregi reprezentând cele două coordonate ale punctului. | ||
+ | |||
+ | **Conctructorul clasei:** | ||
+ | * un constructor fără parametri care instanțiază punctul ''O(0, 0)''. | ||
+ | |||
+ | |||
+ | **Metodele clasei:** | ||
+ | * ''int getX()'' = întoarce abscisa punctului; | ||
+ | * ''void setX(int x)'' = seteaza abscisa punctului; | ||
+ | * ''int getY()'' = întoarce ordonata punctului; | ||
+ | * ''void setY(int y)'' = setează ordonata punctului; | ||
+ | * ''String toString()'' = returnează un String de forma ''(x, y)''; | ||
+ | * ''double distance(int, int)'' = calculează distanța dintre 2 puncte; | ||
+ | * ''double distance(Punct p1)'' = calculează distanța dintre 2 puncte. | ||
+ | |||
+ | Creați o clasă **//Test//**, în același pachet cu clasa **//Punct//**, care conține o metodă **//main//** care calculează distanța dintre punctele ''A(1, 2)'' si ''B(-1, 3)''. | ||
+ | |||
+ | |||
+ | Puteți accesa datele clasei //**Punct**// în metoda //**main**// din clasa //**Test**//? | ||
+ | |||
+ | ====Problema 6==== | ||
Să se definească o clasă **//Graph//** care să descrie un graf ponderat orientat care are nodurile numerotate de la $1$. | Să se definească o clasă **//Graph//** care să descrie un graf ponderat orientat care are nodurile numerotate de la $1$. | ||
Line 141: | Line 165: | ||
* ''boolean isArc(int v, int w)'' = verifică dacă există arc între $v$ și $w$ în graf; | * ''boolean isArc(int v, int w)'' = verifică dacă există arc între $v$ și $w$ în graf; | ||
* ''toString()'' = afișarea grafului (se va alege o variantă intuitivă de afișare a grafului); | * ''toString()'' = afișarea grafului (se va alege o variantă intuitivă de afișare a grafului); | ||
- | * ''int[][] floydWarshall()'' = implementarea algoritmului \textit{Floyd - Warshall} pentru determinarea drumurilor de cost minim în graf; | + | * ''int[][] floydWarshall()'' = implementarea algoritmului Floyd - Warshall pentru determinarea drumurilor de cost minim în graf; |
* ''void main(String[])'' = metoda main pentru testarea functionalității clasei implementate. | * ''void main(String[])'' = metoda main pentru testarea functionalității clasei implementate. | ||
Line 194: | Line 218: | ||
} | } | ||
</code> | </code> | ||
- | |||
- | ====Problema 6==== | ||
- | Implementați clasa **//Punct//** care definește un punct din spațiul 2D. | ||
- | |||
- | **Datele clasei (private):** | ||
- | * două nr. întregi reprezentând cele două coordonate ale punctului. | ||
- | |||
- | **Conctructorul clasei:** | ||
- | * un constructor fără parametri care instanțiază punctul ''O(0, 0)''. | ||
- | |||
- | |||
- | **Metodele clasei:** | ||
- | * ''int getX()'' = întoarce abscisa punctului; | ||
- | * ''void setX(int x)'' = seteaza abscisa punctului; | ||
- | * ''int getY()'' = întoarce ordonata punctului; | ||
- | * ''void setY(int y)'' = setează ordonata punctului; | ||
- | * ''String toString()'' = returnează un String de forma ''(x, y)''; | ||
- | * ''double distance(int, int)'' = calculează distanța dintre 2 puncte; | ||
- | * ''double distance(Punct p1)'' = calculează distanța dintre 2 puncte. | ||
- | |||
- | Creați o clasă **//Test//**, în același pachet cu clasa **//Punct//**, care conține o metodă **//main//** care calculează distanța dintre punctele ''A(1, 2)'' si ''B(-1, 3)''. | ||
- | |||
- | |||
- | Puteți accesa datele clasei //**Punct**// în metoda //**main**// din clasa //**Test**//? | ||
====Problema 7==== | ====Problema 7==== | ||
Line 235: | Line 235: | ||
false Bucuresti Nord (23:45) -> Sofia (17:00) | false Bucuresti Nord (23:45) -> Sofia (17:00) | ||
</code> | </code> | ||
+ | |||
+ | ==== Problemă extra ==== | ||
+ | |||
+ | 1. Definește un **enum** numit //TipProdus// cu următoarele valori: //ALIMENTAR//, //ELECTRONIC//, //VESTIMENTAR//, //ALTUL//. | ||
+ | |||
+ | 2. Creează un **record** numit Produs cu câmpurile: | ||
+ | * String nume | ||
+ | * double pret | ||
+ | * TipProdus tip | ||
+ | 3. Într-o clasă **Main**, creează 3 produse diferite și afișează-le. | ||
+ | 4. Adaugă o metodă **descriere()** în Produs care returnează un text prietenos, de forma: //Produs: Nume=Tricou, Tip=VESTIMENTAR, Pret=99.99 RON// | ||
+ | 5. În main, adaugă produsele într-o listă/vector, parcurge-le și afișează doar produsele de tip //ALIMENTAR//. |