Cuprins

Tema 1: LAN party

Obiective

  1. Înțelegerea conceptului de funcționare și implementare a unor structuri de date(precum liste, stive, cozi, arbori binari de căutare)
  2. Operarea cu aceste structuri de date
  3. Implementarea unei funcționalități practice folosind aceste concepte

Informații

  1. Deadline hard, 14 aprilie ora 23:59 (termen limită - nu se obţin puncte pe soluţiile trimise mai târziu)
  2. Trimiterea temelor se face pe platforma vmchecker (folosiți credențialele de pe http://acs.curs.pub.ro).
  3. Checker-ul offline îl puteţi descărca de la această adresă
  4. Puteţi cere ajutor oricând la această adresă email

Descriere

Facultatea de Automatica si Calculatoare prin LSAC organizează in fiecare semestru un LAN Party la care participă toți studenții care vor sa își testeze abilitățile la un anumit joc. Se dorește realizarea unei soluții software(program executabil) ce poate automatiza acest proces.

Cerințe

  1. Se va crea o listă cu informațiile din fișierul date.in
  2. Se vor elimina din lista anterior creată, echipele cu cel mai mic punctaj de echipă (informațiile despre modul de calcul al acestui punctaj se găsesc în cadrul secțiunii Detalii Tehnice) astfel incat in lista sa ramana n echipe (unde n maxim si n este putere a lui 2).În cazul în care mai multe echipe au acelasi scor prima echipă ce va fi eliminată este echipa imediat următoarea din listă cu excepția cazului în care capul are valoarea minima,caz in care capul va fi eliminat iar parcurgerea va reîncepe de la noul cap.
  3. Se vor implementa structurile de date necesare pentru a se efectua meciurile:
    • Se va crea o coadă în care se vor pune meciurile dintre echipe.
    • Echipele vor forma meciuri în ordinea în care se află în lista de la punctul anterior, primele două echipe vor forma primul meci (și așa mai departe).
    • Se vor crea două stive - una pentru învinși și una pentru câștigători - ce vor conține echipele ce au pierdut, respectiv, au câștigat meciul anterior.
    • 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 șterge echipele ce se găsesc în stiva de învinși.
    • 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.
  4. Se va realiza un clasament al ultimelor 8 echipe rămase în competiție sub forma unui BST(Binary Search Tree). Acesta va fi ordonat după punctajul pe echipă și i se va afișa conținutul în ordine descrescătoare.
  5. Se va realiza un arbore de tip AVL cu ultimele 8 echipe si se vor afisa echipele de pe nivelul 2 al arborelui.

Punctaje si Detalii Tehnice

Punctaje:

Detalii Tehnice

typedef struct Jucator{
      char *nume,  *prenume;
      int xp;
} Jucator;
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.)

Exemplu

Fisierel folosite de checker arata astfel:

cerinte.in
1 0 0 0 0
Obiectivele se vor realiza în funcție de cum apar în fișierul cu cerinte cerinte.in (Spre exemplu dacă fișierul cerinte.in conține 1 0 0 0 0 înseamnă ca se dorește doar realizarea cerinței 1. Se vor folosi ca valori de intrare datele din fișierul date.in)
date.in
10                 // numarul de echipe din fisier
10 The Waiver Wire // numarul de jucatori urmat de numele echipei
Popa Florentina 8  //numele prenumele si punctajul jucatorului 1
Popescu Anca 9
Pop Anamaria 9
Radu Simona 1
Dumitru Iulian 7
Stan Roxana 5
Stoica Oana 5
Gheorghe Irina 10
Matei Diana 1
Ciobanu Mirela 0
În cazul in care un jucator are 2 prenume - acestea sunt scrise cu cratima - si reprezinta un singur sir de caractere. Formatul folosit pentru fprintf este %-25s în cazul afișării meciurilor din coadă.
rezultate.out
 Elixir Junior
 Legalize
 Savage
 The Skyrynners
 The Abusement Park
 Chafing the Dream
 The Big Egos
 The Waiver Wire
 Elixir Junior            --                  Legalize
 Savage                   --            The Skyrynners
 The Abusement Park       --         Chafing the Dream
 The Big Egos             --           The Waiver Wire
 The Big Egos             --- 7.10
 Chafing the Dream        --- 8.10
 Savage                   --- 7.90
 Elixir Junior            --- 5.40
 The Big Egos             --         Chafing the Dream
 Savage                   --             Elixir Junior
 Savage                   --- 8.90
 Chafing the Dream        --- 9.10
 Savage                   --         Chafing the Dream
 Chafing the Dream        --- 10.10

Executabilul obținut în urma compilării va avea numele lanParty, iar regula de rulare va fi:

./lanParty cerinte.in date.in rezultate.out

Reguli de trimitere

Restricții

;

Temele care vor fi copiate vor primi -5 pct şi studenţii implicaţi - mustrări şi vor figura pe blacklist-ul cursului de SDA.