Trebuie respectate regulile de scriere a temei de aici:
https://ocw.cs.pub.ro/courses/poo-is-ab/tema/00
Link încărcare temă https://classroom.github.com/a/O6DR07p0
Schimbati-va numele repository-ului de la Settings
Formatul va fi Tema-2-Grupa-Nume-Prenume, exemplu: Tema-2-322AB-Popescu-Ion
În această temă se simulează o misiune de minare a resurselor din asteroizi folosind rachete, fiecare cu propriile caracteristici și costuri de operare. Scopul este de a optimiza folosirea resurselor și costurilor asociate, maximizând profitul obținut din vânzarea resurselor extrase. Aceasta presupune calcularea costurilor cu combustibil, profitul brut și net, și evaluarea eficienței fiecărei rachete în funcție de performanțele sale în misiuni multiple.
Programul trebuie să fie rulat cu parametri în linia de comandă, unde `argv[1]` este `rachete.csv`, `argv[2]` este `asteroizi.csv` și `argv[3]` este `piata.csv`.
Exemplu de rulare:
```bash ./program rachete.csv asteroizi.csv piata.csv
| ID Rachetă | Capacitate (kg) | Consum combustibil (kg/1000 km) | Combustibil disponibil (kg) | Preț combustibil ($/kg) | |------------|-----------------|---------------------------------|-----------------------------|-------------------------| | R1 | 5000 | 150 | 10000 | 2 | | R2 | 3000 | 120 | 8000 | 1.8 |
| ID Asteroid | Resursă | Cantitate totală (kg)| Randament extracție (%) | Distanță (km) | |-------------|-----------|----------------------|--------------------------|---------------| | A1 | Aur | 2000 | 75 | 500 | | A2 | Fier | 5000 | 90 | 3000 | | A2 | Cupru | 1000 | 82 | 3000 |
| Resursă | Preț minim ($/kg) | Preț maxim ($/kg) | |-----------|-------------------|-------------------| | Aur | 130 | 600 | | Fier | 60 | 120 | | Cupru | 120 | 220 |
| ID Rachetă | ID Asteroid | Resursă | Cantitate extrasă (kg) | Combustibil consumat (kg) | Cost combustibil ($) | Profit brut ($) | Profit net ($) | |------------|-------------|-----------|------------------------|---------------------------|----------------------|-----------------|---------------- | R2 | A1 | Aur | 1500 | 120 | 216 | 900,000 | 899,784 | | R2 | A2 | Fier | 3000 | 720 | 1296 | 360,000 | 358,704 | | R2 | A2 | Fier&Cupru| 2320 | 720 | 1296 | 360,400 | 359,104 |
| ID Rachetă | Profit brut ($) | Cost total combustibil ($) | Profit net ($) | |------------|-----------------|----------------------------|----------------| | R1 | 0 | 0 | 0 | | R2 | 1,620,400 | 2808 | 1,617,592 |
=== profit_pe_resursa.csv ===
| Resursă | Cantitate extrasă (kg) | Profit brut ($) | |-----------|------------------------|-----------------| | Aur | 1500 | 900,000 | | Fier | 4500 | 540,000 | | Cupru | 820 | 180,400 |
| Loc | ID Rachetă | Profit net ($) | Număr misiuni | Scor eficiență | |-----|------------|----------------|---------------|----------------| | 1 | R2 | 1,617,192 | 3 | 539,064 | | 2 | R1 | 0 | 0 | 0 |
Depunctări: Vor exista depunctări pentru:
Prețul actual al resurselor se va calcula pe baza prețului maxim inițial, iar după fiecare vânzare de 10,000 kg de resurse, prețul va scădea cu 10%. Totuși, prețul nu va scădea niciodată sub prețul minim stabilit pentru fiecare resursă. Formula de calcul este:
1. **Prețul inițial** este prețul maxim din fișierul `piata.csv`. 2. **Calculul Prețului Actual**: - Dacă resursa a fost vândută în cantitate de 10,000 kg sau mai mult, prețul se va reduce astfel: ``` Preț actual = Preț actual * 0.9 ``` - Prețul nu poate scădea sub prețul minim: ``` Preț actual = max(Preț actual, Preț minim) ```
Astfel, la fiecare 10,000 kg de resurse vândute, prețul se va ajusta în funcție de acest calcul.
Pentru fiecare misiune, consumul de combustibil se va calcula pe baza distanței și a consumului de combustibil pe 1000 km al fiecărei rachete. Având în vedere că drumul este dus-întors, distanța va trebui să fie dublată.
1. **Formula pentru calculul consumului de combustibil**: ``` Consum combustibil = (Distanta * 2) * (Consum combustibil / 1000) ``` Unde: - **Distanta**: distanța către asteroid (din fișierul `asteroizi.csv`). - **Consum combustibil**: consumul de combustibil al rachetei pe 1000 km (din fișierul `rachete.csv`). - **Multiplicăm distanța cu 2** pentru a ține cont de drumul dus-întors.
Profitul brut pentru fiecare misiune se va calcula prin înmulțirea cantității de resurse extrase cu prețul actual al resursei. Formula este:
1. **Formula pentru calculul profitului brut**: ``` Profit brut = Cantitate extrasă (kg) * Preț actual ($/kg) ``` Unde: - **Cantitatea extrasă** este cantitatea de resursă extrasă în fiecare misiune, ținând cont de randamentul extracției. - **Preț actual** este prețul actual calculat mai sus.
Costul combustibilului pentru fiecare misiune se va calcula înmulțind consumul de combustibil cu prețul combustibilului pe kilogram (din fișierul `rachete.csv`):
1. **Formula pentru calculul costului combustibilului**: ``` Cost combustibil = Consum combustibil (kg) * Preț combustibil ($/kg) ```
Profitul net este rezultatul obținut prin scăderea costului combustibilului din profitul brut:
1. **Formula pentru calculul profitului net**: ``` Profit net = Profit brut - Cost combustibil ```
Acest calcul va fi realizat pentru fiecare misiune, iar totalul profitului net pentru fiecare rachetă va fi calculat prin adunarea profitului net din toate misiunile realizate de acea rachetă.
Eficiența fiecărei rachete va fi evaluată pe baza profitului net obținut și a numărului de misiuni realizate. Scorul de eficiență va fi calculat astfel:
1. **Formula pentru scorul de eficiență**: ``` Scor eficiență = Profit net / Număr misiuni ```
Scorul de eficiență va ajuta la evaluarea performanței fiecărei rachete în funcție de cantitatea de profit net realizată în raport cu numărul de misiuni efectuate. O rachetă care a realizat mai multe misiuni, dar cu un profit net mic, va avea un scor de eficiență mai mic decât o rachetă care a realizat mai puține misiuni dar cu un profit net mai mare.
Aceste calcule vor ajuta la evaluarea performanței fiecărei rachete și la optimizarea procesului de extragere și vânzare a resurselor din asteroizi.