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/23 12:32] (current) carmen.odubasteanu [Problemă extra] |
||
|---|---|---|---|
| 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//. | ||