This shows you the differences between two versions of the page.
sda-ab:tema1 [2021/03/29 14:32] gabriel.rusu created |
sda-ab:tema1 [2022/03/29 12:17] (current) andreea.udrea [Informații] |
||
---|---|---|---|
Line 9: | Line 9: | ||
===== Informații ===== | ===== Informații ===== | ||
- | * Deadline hard, sometime ora 23:59 (termen limită - nu se obţin puncte pe soluţiile trimise mai târziu) | + | * Deadline hard, 22 mai, ora 23:59 (termen limită - nu se obţin puncte pe soluţiile trimise mai târziu) |
- | * Checker-ul offline îl puteţi descărca de la [[https://github.com/poo-is/lan-party-checker| această adresă]] | + | * Checker-ul offline îl puteţi descărca de la [[https://github.com/sda-ab/lan-party-02-checker| această adresă]] |
- | * Puteţi cere ajutor oricând la această adresă [[poo.is.teme@gmail.com|email]] | + | * Informații despre ce este un makefile gasiți [[https://ocw.cs.pub.ro/courses/sda-ab/makefile| aici]] și [[https://github.com/sda-ab/makefile-intro| aici]] |
+ | * Puteţi cere ajutor oricând la această adresă [[sda.ab.teme@gmail.com|email]] | ||
Line 26: | Line 27: | ||
* Se vor introduce în stivă echipele în funcție de rezultatul obținut și se va adauga un punct la punctajul de echipă al echipelor ce au câștigat. | * Se vor introduce în stivă echipele în funcție de rezultatul obținut și se va adauga un punct la punctajul de echipă al echipelor ce au câștigat. | ||
* In cazul unui meci in care ambele echipe au acelasi punctaj, se va alege prima echipa adaugata in meciul disputat. | * In cazul unui meci in care ambele echipe au acelasi punctaj, se va alege prima echipa adaugata in meciul disputat. | ||
- | * Se vor șterge echipele ce se găsesc în stiva de învinși. | + | * Se vor șterge echipele ce se găsesc în stiva de învinși. (la finalul fiecărei etape; ex: dintr-o runda cu 8 echipe, stergerea se face dupa ce au fost eliminate toate echipele. In acest caz, dupa ce au fost eliminate 4 dintre echipe, se vor sterge. In runda urmatoare, pe acest exemplu, se vor adauga 2 echipe in stiva de invinsi, dupa care o sa fie eliberata din nou - stiva de invinsi -.) |
* Din stiva de câștigători se vor extrage echipele și se va umple din nou coada de meciuri formându-se meciuri cu echipele consecutive (prima echipă scoasă din stivă va juca cu a doua echipa scoasă din stivă primul meci). | * Din stiva de câștigători se vor extrage echipele și se va umple din nou coada de meciuri formându-se meciuri cu echipele consecutive (prima echipă scoasă din stivă va juca cu a doua echipa scoasă din stivă primul meci). | ||
* Se vor repeta pașii enumerați pana la aflarea echipelor de pe primele 8 locuri, care vor fi salvate intr-o alta lista, dupa aflarea acestora se vor continua meciurile pana la aflarea echipei castigatoare. | * Se vor repeta pașii enumerați pana la aflarea echipelor de pe primele 8 locuri, care vor fi salvate intr-o alta lista, dupa aflarea acestora se vor continua meciurile pana la aflarea echipei castigatoare. | ||
Line 44: | Line 45: | ||
* Pentru cerința 4 se dorește afișarea BST -ului în ordine descrescătoare. Adică afișarea clasamentului în ordine descrescătoare. | * Pentru cerința 4 se dorește afișarea BST -ului în ordine descrescătoare. Adică afișarea clasamentului în ordine descrescătoare. | ||
* Pentru cerința 5 se dorește crearea unui AVL cu echipele de la sub punctul anterior și scrierea în fișier a echipelor de la nivelul 2. | * Pentru cerința 5 se dorește crearea unui AVL cu echipele de la sub punctul anterior și scrierea în fișier a echipelor de la nivelul 2. | ||
- | * Structurile de date necesare trebuie deduse astfel încât sa respecte normele de buna implementare Ex: un jucator are nume, prenume, experienta - prin urmare se va folosi un tip de date care sa caracterizeze aceasta entitate:(Acelasi lucru trebuie facut si pentru alte tipuri de date necesare realizarii aplicatiei.) | + | * Structurile de date necesare trebuie deduse astfel încât sa respecte normele de buna implementare Ex: un jucator are nume, prenume, puncte de experienta - prin urmare se va folosi un tip de date care sa caracterizeze aceasta entitate:(Acelasi lucru trebuie facut si pentru alte tipuri de date necesare realizarii aplicatiei.) |
- | <code cpp player.hpp> | + | <code cpp player.h> |
- | class Player | + | struct Player |
{ | { | ||
- | private: | + | char* firstName; |
- | string firstName; | + | char* secondName; |
- | string secondName; | + | |
int points; | int points; | ||
}; | }; | ||
</code> | </code> | ||
- | <note>Formula de calcul a punctajului de echipa este: media aritmetica a experienței (xp) jucătorilor din echipa respectiva. La fiecare meci câștigat punctajul de echipa va creste cu 1.(Trebuie modificate toate punctajele jucătorilor echipei pentru realizarea acestui task.)</note> | + | <note>Formula de calcul a punctajului de echipa este: media aritmetica a punctelor de experiență (points) corespunzătoare jucătorilor din echipa respectiva. La fiecare meci câștigat punctajul de echipa va creste cu 1.(Trebuie modificate toate punctajele jucătorilor echipei pentru realizarea acestui task.)</note> |
===== Exemplu ===== | ===== Exemplu ===== | ||
Line 183: | Line 183: | ||
<note tip>./lanParty c.in d.in r.out</note> | <note tip>./lanParty c.in d.in r.out</note> | ||
+ | <note tip>Exemplu cerinta 2: | ||
+ | |||
+ | Initial sunt **146** de echipe, iar valoarea lui N pentru a avea numarul maxim de echipe ca putere a lui 2 este 7 => 2^7 = **128**, ceea ce inseamna ca din 146 echipe eliminam pana cand raman 128 de echipe in concurs. | ||
+ | </note> | ||
+ | |||
+ | ===== Tips Checker ===== | ||
+ | |||
+ | **Checker-ul** este un script care pentru a valida testul X, compara linie cu linie fisierul de Output (generat de codul vostru) cu fisierul de Rezultate/Expected (rezultatul corect pentru testul respectiv). | ||
+ | |||
+ | Acesta foloseste fisierul **Makefile** pentru a compila programele sursa (main.c, generareJoc.c etc) si genereaza executabilul **//__lanParty__//**, care primeste cele trei argumente (cerinte.in, date.in, rezultate.out). | ||
+ | |||
+ | <note important>In cazul in care fisierul vostru de Output este similar cu cel de Rezultate, iar rezultatul pe test este 0, verificati ca cele 2 fisiere sunt identice folosind un comparator de text (precum: [[https://text-compare.com/|text compare]]). Existenta spatiilor la final de linie sau de fisier pot duce la invalidarea testului.</note> | ||
+ | |||
+ | <note warning>**Alte probleme pot aparea din cauza alocarii/eliberarii neadecvate de memorie.**</note> | ||
===== Reguli de trimitere ===== | ===== Reguli de trimitere ===== | ||
* Puteţi încărca mai multe soluţii, se va lua în considerare ultima solutie incarcata, termen limita x | * Puteţi încărca mai multe soluţii, se va lua în considerare ultima solutie incarcata, termen limita x | ||
* Arhiva temei va avea numele GrupaSerie_Nume_Prenume_TemaNr.zip și va fi încărcată pe moodle. | * Arhiva temei va avea numele GrupaSerie_Nume_Prenume_TemaNr.zip și va fi încărcată pe moodle. | ||
* Arhiva trimisă conține (direct în rădăcină): | * Arhiva trimisă conține (direct în rădăcină): | ||
- | - Fişierul sau fişierele (.cpp si .hpp) cu codul programului; | + | - Fişierul sau fişierele (.c si .h) cu codul programului; |
- Makefile-ul (cu regulile make build și make clean). Executabilul generat trebuie să se numească lanParty; | - Makefile-ul (cu regulile make build și make clean). Executabilul generat trebuie să se numească lanParty; | ||
- fișierul README în care va fi descrisă soluția problemei. | - fișierul README în care va fi descrisă soluția problemei. | ||
==== Restricții ==== | ==== Restricții ==== | ||
- | * Implementarea se va face folosind limbajul C++; | + | * Implementarea se va face folosind limbajul C; |
* Implementarea se va face folosind liste.Nu e permisa implementarea cu vector a stivelor, cozii și a listei cu echipe participante. Se recomanda folosirea pointerilor și eliberarea memoriei.; | * Implementarea se va face folosind liste.Nu e permisa implementarea cu vector a stivelor, cozii și a listei cu echipe participante. Se recomanda folosirea pointerilor și eliberarea memoriei.; | ||
* Se va evita pe cat posibil duplicarea nodurilor din lista pentru abateri grave de la aceasta cerința se vor scădea pana la 5 puncte. | * Se va evita pe cat posibil duplicarea nodurilor din lista pentru abateri grave de la aceasta cerința se vor scădea pana la 5 puncte. | ||
* Nu se acceptă implementări cu tipuri de date cu memorie alocată static (se acceptă numai variabile locale de tip buffer pentru stocare temporară înainte de alocare); | * Nu se acceptă implementări cu tipuri de date cu memorie alocată static (se acceptă numai variabile locale de tip buffer pentru stocare temporară înainte de alocare); | ||
- | * Se va depuncta lucrul nemodularizat (fără clase cu funcții membre).Operațiile pe structurile de date de tip arbore, coada, etc se fac folosind clase si funcții membre - Ex: adaugaNod, stergeNod, etc. Orice alte manipulări de date se fac, pe cat posibil, prin funcții specializate. ; | + | * Se va depuncta lucrul nemodularizat (functii cu mai mult de 40 de linii).Operațiile pe structurile de date de tip arbore, coada, etc se fac folosind funcții ce au nume sugestive - Ex: adaugaNod, stergeNod, etc. Orice alte manipulări de date se fac, pe cat posibil, prin funcții specializate. ; |
* Memoria trebuie eliberată. Dacă nu se respectă această cerință depunctarea este de pana la 10/100 pct (restricție aplicabila de la 60 de puncte in sus). | * Memoria trebuie eliberată. Dacă nu se respectă această cerință depunctarea este de pana la 10/100 pct (restricție aplicabila de la 60 de puncte in sus). | ||
* Menţineţi cel puţin un nivel minimal de aspect al codului şi evitaţi inconsistenţa (indentare haotică, numeroase combinaţii de caractere de tip „leading/trailing whitespace“, numirea variabilelor şi a funcţiilor în ordinea literelor din alfabet); | * Menţineţi cel puţin un nivel minimal de aspect al codului şi evitaţi inconsistenţa (indentare haotică, numeroase combinaţii de caractere de tip „leading/trailing whitespace“, numirea variabilelor şi a funcţiilor în ordinea literelor din alfabet); | ||
* Dacă soluția voastră nu compilează, dar ideea este bună și trimiteți o încercare de implementare, puteți primi până la 20/100 pct; | * Dacă soluția voastră nu compilează, dar ideea este bună și trimiteți o încercare de implementare, puteți primi până la 20/100 pct; | ||
* Se va depuncta cu pana 15% din punctajul obtinut implementarea care nu foloseste tipuri de date specifice pentru entitiatile din cerinta (ex: Player) | * Se va depuncta cu pana 15% din punctajul obtinut implementarea care nu foloseste tipuri de date specifice pentru entitiatile din cerinta (ex: Player) |