Tema de casă 3 - Christmas

Responsabili: Roxana Soare, Teodora Șerbănescu

Autori iniţiali: Octavian Grigorescu, Florin Pop

Termen de predare:

Deadline Soft: 17 decembrie 2017, ora 23:55

Deadline Hard: 7 ianuarie 2018, ora 23:55

În perioada vacanţei de iarnă nu se vor aplica depunctări. Crăciun fericit!

Obiective Temă

  • să se realizeze un program urmând anumite cerințe
  • să se utilizeze funcţii, pentru a modulariza programul
  • să se utilizeze și să se înțeleagă structurile
  • să se însușească cunoștințele din primele 10 laboratoare

Enunţul temei

Moș Crăciun este personajul cel mai iubit și așteptat în perioada sărbătorilor de iarnă. El primește cea mai mare atenție din partea copiilor și a părinților deopotrivă. Se zvonește că respectă toate dorințele copiilor, îi ajută pe cei obraznici să devină ascultători și călătorește în toată lumea într-o singură noapte. Pare imposibil ca moșul să le facă singur pe toate, însa nu este singur.

Peste mai puțin de doua săptămâni are loc cea mai frumoasă sărbătoare din an, Crăciunul. Cu această ocazie Moș Crăciun este foarte ocupat cu pregătirea darurilor alături de spiridușii lui. El trebuie să străbată Laponia pentru a aduna cadourile create de spiriduși și să realizeze o ierarhie a lor. Cum timpul este scurt, iar Pământul este foarte mare, Alabaster Snowball, spiridușul administrator a apelat la studenții de anul I, dornici de programare, de la Facultatea de Automatică și Calculatoare din Universitatea POLITEHNICA București, pentru a îl ajuta pe Moș Crăciun.

Harta

Laponia este reprezentată ca o matrice de zone (regiuni) de dimensiune N * M unde se află câte o fabrică și spiridușii ce construiesc jucării pentru toți copiii. Fiecare regiune conține:

  • un anumit tip de cadouri.
  • numărul de cadouri disponibile ( poate să nu fie niciunul ).
  • un oraș ce reprezintă destinația cadourilor precizate mai sus.
  • direcția pe care să o urmeze sania Moșului.

Deplasarea pe hartă

Sania lui Moș Crăciun se poate deplasa astfel:

  • 'U'(up ⇔ line-–).
  • 'D'(down ⇔ line++).
  • 'L'(left ⇔ col-–).
  • 'R'(right ⇔ col++).

Cerința temei

Programul vostru va trebui să ghideze sania magică dupa indicațiile din zona precedentă și să adune câte un cadou din fiecare regiune cât timp nu s-a terminat numărul de pași citit inițial de la stdin. Aceasta va avea un punct de intrare (de start) în zona încântătoare a jucăriilor definită prin coordonate (linie, coloană). Dacă nu mai sunt cadouri pregătite într-o anumită regiune, Moș Craciun nu ia nimic, doar servește o ciocolată caldă și un fursec alături de spiriduși. La final trebuie afișată o ierarhie a darurilor adunate dupa exemplul de mai jos.

  • orașele sunt ordonate lexicografic.
  • cadourile sunt ordonate descrescător după numărul de apariții
  • dacă două sau mai multe tipuri de daruri au același număr de apariții atunci se ordonează lexicografic

Există posibilitatea ca sania lui Moș Crăciun, în urma unei indicații de direcție să părăsească harta căutării de daruri și să se înțepenească în nămeții de zăpadă ce înconjoară Laponia. În acest moment, de asemenea se afișează numărul de pași parcurși, numărul de cadouri adunate și ierarhia de cadouri creată până în momentul de față, dar pe prima linie, la afișare, trebuie specificat acest lucru prin TOO MUCH SNOW !

Exemplu

input.txt:

2 3                   // N si M
0 1                   // Punctul de start
6                     // Numărul de pași
BERLIN CAR 1 U        // Structura regiunii Laponia
BERLIN CAR 1 R
BUCHAREST JACKET 2 D
NEW_YORK DOLL 7 U
BERLIN ROBOT 5 L
BUCHAREST BALL 4 L


output.txt:

TOO MUCH SNOW !
5                     // Numărul de pași relizați de Moș Crăciun(în cazul de față sania s-a blocat în zăpadă)
6                     // Numărul total de cadouri adunate de Moș Crăciun
BERLIN:               // Orașul destinație
  2 CAR               // Număr de cadouri, tip cadou
  1 ROBOT
BUCHAREST:
  1 BALL
  1 JACKET
NEW_YORK:
  1 DOLL
  
  

Mod afișare:

nume oras:

<space><space>număr cadouri<space>tip cadou

<space><space>număr cadouri<space>tip cadou

Numele de orașe formate din două cuvinte vor fi separate prin ' _ ', nu cu spațiu → LOS_ANGELES

Mențiuni

  • Inițial în sacul lui Moș Crăciun încap cadouri doar pentru doua orașe.
  • Cand sacul se va umple, Moș Crăciun aplică o transformare magică asupra sacului, dublandu-i capacitatea (acum acceptă 4 orașe, apoi 8, etc) la fel și pentru tipul de cadouri.
  • Utilizați alocarea dinamică cat mai mult posibil.

Punctaj

  • 90p trecerea testelor de pe vmchecker.
  • 5p lizibilitate și coding style.
  • 5p README, comentarii clare, concise.
  • 20p BONUS pentru respectarea Mențiunilor ( specificați în README ca l-ați abordat ).
  • O tema care nu compileaza sau nu trece niciun test pe vmchecker nu va fi punctata.

Format Arhivă

Arhiva trebuie să conțină

  • fișierul ( sau fișierele ) sursă.
  • fișierul README în care să se descrie pe scurt implementarea temei.
  • fișier Makefile care conține reguli de build și clean. Regula build va compila programul într-un executabil cu numele christmas. Regula clean va șterge executabilul și eventual toate binarele intermediare (fișiere obiect) generate de voi.

Nume Arhivă: GRUPĂ_Nume_Prenume_Tema3.zip

Resurse

Testare

Testarea temei se va face folosind un script de evaluare automată.

checker

Nu copiați !!! Moș Crăciun vede tot și nu veți mai primi nimic :-(

programare/teme_2017/tema3_2017_ca.txt · Last modified: 2017/12/02 18:31 by teodora.serbanescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0