Subiectul al II-lea, cerința 2
Test pentru proba practică
Un test de probă practică pe metoda Greedy, cu trei itemi, și baremul de evaluare și de notare corespunzător, cu etapele răspunsului așteptat și criteriile analitice.
Secvența A vizează competențele specifice 2.1, 2.2 și 2.3, pe conținutul Metode de programare — Metoda de programare Greedy.
TEST — probă practică
Disciplina: Informatică · Clasa: a XI-a, filiera teoretică, profil real, specializarea matematică-informatică
Unitatea de învățare: Metode de programare · Conținutul: Metoda de programare Greedy
Timpul de lucru: 50 de minute · Toate subiectele sunt obligatorii. Se acordă 10 puncte din oficiu.
Programele se scriu în limbajul C++ și se salvează în folderul indicat de profesor, cu numele cerut la fiecare item. Fișierele de intrare se află deja în acest folder.
Itemul 1 — 25 de puncte
Într-un depozit se află n produse (n ≤ 100). Pentru fiecare produs se cunosc denumirea,
cantitatea disponibilă, în kilograme, și câștigul obținut prin vânzarea întregii cantități. Un
transportator dispune de un vehicul care poate duce cel mult Gmax kilograme. Produsele pot fi
transportate și parțial; în acest caz, câștigul este proporțional cu cantitatea încărcată.
Fișierul rucsac.in conține pe prima linie valorile Gmax și n, separate printr-un spațiu,
iar pe fiecare dintre următoarele n linii denumirea unui produs, cantitatea și câștigul,
separate prin câte un spațiu.
a) Creați fișierul text analiza.txt, în care precizați datele de intrare, datele de
ieșire și criteriul de selecție pe care îl folosiți pentru a obține câștigul maxim. (8 puncte)
b) Scrieți programul item1.cpp, care citește datele din fișierul rucsac.in și afișează
pe ecran câștigul maxim, cu două zecimale, și denumirile produselor încărcate, în ordinea în
care au fost alese, precizând pentru ultimul dintre ele cantitatea încărcată, dacă a fost
încărcat parțial. (17 puncte)
Itemul 2 — 35 de puncte
La un festival se desfășoară n spectacole (n ≤ 100), fiecare cu o oră de început și o oră de
sfârșit, numere naturale din intervalul [0, 24]. Un spectator dorește să vizioneze integral un
număr maxim de spectacole. Un spectacol nou poate începe numai după ce s-a terminat cel
vizionat anterior.
Fișierul spectacole.in conține pe prima linie numărul n, iar pe fiecare dintre următoarele
n linii denumirea unui spectacol, ora de început și ora de sfârșit, separate prin câte un
spațiu.
Scrieți programul item2.cpp, care citește datele din fișier, determină prin metoda Greedy o
mulțime de cardinal maxim de spectacole care pot fi vizionate și afișează pe ecran numărul lor,
apoi denumirea, ora de început și ora de sfârșit ale fiecăruia, în ordine cronologică.
Ordonarea spectacolelor se face într-un subprogram distinct.
Itemul 3 — 30 de puncte
Se cere plata unei sume S cu un număr minim de bancnote, dintr-un sistem de cupiuri dat. Se
consideră că din fiecare cupiură există un număr nelimitat de bancnote.
a) Scrieți programul item3a.cpp, care rezolvă problema prin metoda Greedy, alegând la
fiecare pas cupiura de valoare cea mai mare care nu depășește suma rămasă de plătit.
(8 puncte)
b) Scrieți programul item3b.cpp, care determină numărul minim de bancnote încercând toate
posibilitățile de plată. (10 puncte)
c) Rulați ambele programe pe cele trei seturi de date de mai jos, completați tabelul din
fișierul comparatie.txt și formulați, în același fișier, o concluzie privind situațiile în
care metoda Greedy conduce la soluția optimă. (12 puncte)
| Setul | Cupiurile | Suma S |
|---|---|---|
| 1 | 1, 5, 10, 50 | 68 |
| 2 | 1, 3, 4 | 6 |
| 3 | 1, 6, 10 | 12 |
BAREM DE EVALUARE ȘI DE NOTARE
- Se punctează orice modalitate de rezolvare corectă a cerințelor.
- Nu se acordă fracțiuni de punct.
- Se acordă 10 puncte din oficiu. Nota finală se calculează prin împărțirea la zece a punctajului total acordat.
Itemul 1 — 25 de puncte
Răspunsul așteptat la subpunctul a). Datele de intrare: Gmax, n și, pentru fiecare
produs, denumirea, cantitatea și câștigul. Datele de ieșire: câștigul maxim și lista produselor
încărcate. Criteriul de selecție: se încarcă mai întâi produsele cu câștigul pe kilogram cel
mai mare, adică cele pentru care raportul dintre câștig și cantitate este maxim.
Etapele necesare obținerii răspunsului la subpunctul b). Citirea datelor din fișier și calcularea, pentru fiecare produs, a câștigului pe kilogram; ordonarea descrescătoare a produselor după această valoare; parcurgerea produselor în ordinea obținută și încărcarea integrală a fiecăruia cât timp cantitatea lui nu depășește capacitatea rămasă, cu scăderea cantității încărcate din capacitatea rămasă și adunarea câștigului la total; încărcarea parțială a primului produs care nu mai încape integral, cu adăugarea câștigului proporțional cu cantitatea încărcată; afișarea rezultatelor.
Pe fișierul de intrare dat, cu Gmax = 50 și produsele de câte 10 kg / 60 lei, 20 kg / 100 lei și 30 kg / 120 lei, câștigul maxim este 240,00, obținut prin încărcarea integrală a primelor două produse și a 20 de kilograme din al treilea.
| Criteriul de evaluare | Punctaj |
|---|---|
precizarea datelor de intrare, în fișierul analiza.txt | 2p |
| precizarea datelor de ieșire | 2p |
| precizarea criteriului de selecție, corect formulat | 4p |
citirea corectă a datelor din fișierul rucsac.in | 2p |
| ordonarea produselor după câștigul pe kilogram | 5p |
| încărcarea produselor care încap integral, cu actualizarea capacității rămase | 5p |
| încărcarea parțială a ultimului produs și calculul câștigului proporțional | 3p |
| afișarea câștigului maxim și a produselor încărcate, conform cerinței | 2p |
Rezolvarea se poate citi pe educamp.ro, la adresa de mai sus.
S-a încheiat minutul de citit liber.
Ce cuprinde rezolvarea
- TEST — probă practică
- BAREM DE EVALUARE ȘI DE NOTARE
Vezi rezolvarea ca și cursant
Cel puțin o cerință din fiecare an este disponibilă gratuit și integral. Pentru a citi toate celelalte rezolvări ale disciplinei, te înscrii la cursul de pregătire.
Te înscrii, alegi în cont când începe cursul și plătești prima lună prin transfer bancar. Pentru a vedea mai întâi cum este scrisă o rezolvare, poți reveni la prima cerință a anului.
Acces la suportul de curs
25 RON / lună, fără ședințe
Ce cuprinde:
- Acces la toate lecțiile disponibile
- Suport de curs pentru tematica științifică și metodică
- Exemple, explicații și exerciții
- Acces la materialele noi adăugate pe platformă
- Posibilitatea de a adresa întrebări
Poți alege și variante cu ședințe online, în grup sau individuale. Le vezi pe pagina cursului.
Ai întrebări sau o problemă? Scrie-mi pe WhatsApp, la 0745 874 576.