This shows you the differences between two versions of the page.
|
poo-is-ab:tema:2025:02_test [2025/10/31 18:16] marius.trifu created |
poo-is-ab:tema:2025:02_test [2025/10/31 18:47] (current) marius.trifu [Informații generale] |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| <note important> | <note important> | ||
| - | **Publicare:** 03.11.2024 \\ | + | **Publicare:** 02.11.2024 \\ |
| - | **Deadline:** 17.11.2024, ora 23:59 | + | **Deadline:** 16.11.2024, ora 23:59 |
| </note> | </note> | ||
| Line 11: | Line 11: | ||
| * Tema trebuie realizată **exclusiv în C++**. | * Tema trebuie realizată **exclusiv în C++**. | ||
| * Nu se permite folosirea STL (implementați structuri și algoritmi de la zero). | * Nu se permite folosirea STL (implementați structuri și algoritmi de la zero). | ||
| - | * Testare automată pe **8 seturi input/output**. | + | * Testare automată pe **18 seturi input**. |
| * Toate valorile numerice din fișiere trebuie să fie în format standard (punct pentru zecimale). | * Toate valorile numerice din fișiere trebuie să fie în format standard (punct pentru zecimale). | ||
| * Se acceptă implementare procedurală sau OOP (dar organizată pe fișiere `.h/.cpp`). | * Se acceptă implementare procedurală sau OOP (dar organizată pe fișiere `.h/.cpp`). | ||
| Line 22: | Line 22: | ||
| Exemplu: Dacă în pătratul 00x00 ai plantat morcov la ziua 1 și l-ai cules la ziua 4, nu poți planta din nou morcov în același pătrat imediat după. | Exemplu: Dacă în pătratul 00x00 ai plantat morcov la ziua 1 și l-ai cules la ziua 4, nu poți planta din nou morcov în același pătrat imediat după. | ||
| * **Plante prietenoase:** Unele legume pot fi plantate doar după alte legume specifice (legumă după legumă). | * **Plante prietenoase:** Unele legume pot fi plantate doar după alte legume specifice (legumă după legumă). | ||
| - | Exemplu: Morcovul poate fi plantat doar după ceapă, castravete sau rădăcinoase. | + | Aceste relații vor fi menționate în secțiunea ROTATIE a fișierului de intrare. |
| * **Sumă finală maximă:** Obiectivul este să obțineți cea mai mare sumă finală de bani posibilă în perioada de simulare. | * **Sumă finală maximă:** Obiectivul este să obțineți cea mai mare sumă finală de bani posibilă în perioada de simulare. | ||
| * **Gestionează banii:** Ai o sumă inițială și fiecare plantare costă bani. Nu poți planta dacă nu ai bani suficienți. | * **Gestionează banii:** Ai o sumă inițială și fiecare plantare costă bani. Nu poți planta dacă nu ai bani suficienți. | ||
| Line 30: | Line 30: | ||
| * Afișați toate acțiunile în ordine cronologică în fișierul de ieșire. | * Afișați toate acțiunile în ordine cronologică în fișierul de ieșire. | ||
| * La sfârșitul simulării, calculați suma finală de bani obținută. | * La sfârșitul simulării, calculați suma finală de bani obținută. | ||
| + | {{ :poo-is-ab:tema:2025:screenshot_14.png?400 |}} | ||
| ===== 2. Formate fișiere ===== | ===== 2. Formate fișiere ===== | ||
| Line 39: | Line 39: | ||
| ^ ferma.txt ^ | ^ ferma.txt ^ | ||
| | <code> | | <code> | ||
| - | L L ZILE BANI | + | L L ZILE BANI N |
| nume_leguma1 timp_cultivare1 cost1 pret_vanzare1 | nume_leguma1 timp_cultivare1 cost1 pret_vanzare1 | ||
| nume_leguma2 timp_cultivare2 cost2 pret_vanzare2 | nume_leguma2 timp_cultivare2 cost2 pret_vanzare2 | ||
| ... | ... | ||
| - | ROTATIE | + | ROTATIE M |
| - | leguma1 leguma2 (sau N/A daca nu are restrictii) | + | leguma1 N/A |
| - | leguma3 leguma4 (sau N/A daca nu are restrictii) | + | leguma2 leguma1 |
| + | leguma3 leguma2 | ||
| + | leguma4 leguma1 | ||
| ... | ... | ||
| </code> | | </code> | | ||
| Line 54: | Line 56: | ||
| * **ZILE** – numărul de zile de simulare, 1 ≤ ZILE ≤ 100 | * **ZILE** – numărul de zile de simulare, 1 ≤ ZILE ≤ 100 | ||
| * **BANI** – suma inițială de bani (RON), 1 ≤ BANI ≤ 10000 | * **BANI** – suma inițială de bani (RON), 1 ≤ BANI ≤ 10000 | ||
| + | * **N** – numărul de legume definite, 1 ≤ N ≤ 20 | ||
| * **nume_leguma** – numele legumei (maxim **30 caractere**, fără spații) | * **nume_leguma** – numele legumei (maxim **30 caractere**, fără spații) | ||
| * **timp_cultivare** – numărul de zile necesare pentru cultivare, 1 ≤ timp_cultivare ≤ 30 | * **timp_cultivare** – numărul de zile necesare pentru cultivare, 1 ≤ timp_cultivare ≤ 30 | ||
| * **cost** – costul de plantare a unei legume (RON), 1 ≤ cost ≤ 1000 | * **cost** – costul de plantare a unei legume (RON), 1 ≤ cost ≤ 1000 | ||
| * **pret_vanzare** – prețul de vânzare pentru o legumă (RON), 1 ≤ pret_vanzare ≤ 5000 | * **pret_vanzare** – prețul de vânzare pentru o legumă (RON), 1 ≤ pret_vanzare ≤ 5000 | ||
| - | * **ROTATIE** – secțiunea ce definește relațiile de rotație între legume | + | * **ROTATIE M** – secțiunea ce definește relațiile de rotație între legume |
| + | * **M** – numărul de linii de rotație, M ≥ N | ||
| * **leguma1 leguma2** – leguma1 poate fi plantată **după** leguma2 | * **leguma1 leguma2** – leguma1 poate fi plantată **după** leguma2 | ||
| * **leguma1 N/A** – leguma1 nu are restricții de rotație (poate fi plantată după orice legumă) | * **leguma1 N/A** – leguma1 nu are restricții de rotație (poate fi plantată după orice legumă) | ||
| - | * **Toate** legumele trebuie să apară în secțiunea ROTATIE, fie cu o restricție, fie cu N/A | + | * Pot exista **mai multe linii** pentru aceeași legumă (leguma1 poate fi plantată după leguma2, leguma3, etc.) |
| **Restricții:** | **Restricții:** | ||
| - | * Numărul total de tipuri de legume: 1 ≤ număr legume ≤ 20 | + | * Numărul total de tipuri de legume: 1 ≤ N ≤ 20 |
| * Fiecare legumă apare cel mult o dată în lista de legume | * Fiecare legumă apare cel mult o dată în lista de legume | ||
| - | * În secțiunea ROTATIE, fiecare legumă din lista de legume trebuie să aibă o linie (fie cu o restricție de rotație, fie cu N/A) | + | * Numărul de linii de rotație: M ≥ N (pot fi mai multe reguli pentru aceeași legumă) |
| ^ ferma.txt ^ | ^ ferma.txt ^ | ||
| | <code> | | <code> | ||
| - | 3 3 10 500 | + | 3 3 10 500 4 |
| morcov 3 50 200 | morcov 3 50 200 | ||
| ceapa 2 30 150 | ceapa 2 30 150 | ||
| castravete 4 80 300 | castravete 4 80 300 | ||
| roșie 5 100 400 | roșie 5 100 400 | ||
| - | ROTATIE | + | ROTATIE 4 |
| morcov ceapa | morcov ceapa | ||
| ceapa N/A | ceapa N/A | ||
| Line 187: | Line 191: | ||
| * Gestionați starea fermei (ce este plantat în fiecare pătrat, când a fost plantat, etc.). | * Gestionați starea fermei (ce este plantat în fiecare pătrat, când a fost plantat, etc.). | ||
| - | ===== 5. Punctaj (5p) ===== | + | ===== 5. Punctaj (10p) ===== |
| - | * **Teste automate (4p)** | + | * **Teste automate (9p)** |
| - | * 8 teste × 0.5p = 4p | + | * 18 teste × 0.5p = 9p |
| * **Fișier README.md (1p)** care să conțină: | * **Fișier README.md (1p)** care să conțină: | ||
| * Nume și grupă | * Nume și grupă | ||
| Line 210: | Line 214: | ||
| ^ ferma.txt ^ | ^ ferma.txt ^ | ||
| | <code> | | <code> | ||
| - | 2 2 15 300 | + | 2 2 10 300 2 |
| morcov 3 50 200 | morcov 3 50 200 | ||
| ceapa 2 40 160 | ceapa 2 40 160 | ||
| - | ROTATIE | + | ROTATIE 2 |
| morcov ceapa | morcov ceapa | ||
| ceapa N/A | ceapa N/A | ||