Differences

This shows you the differences between two versions of the page.

Link to this comparison view

programare:teme_2021:tema2_2021_cbd [2021/11/23 12:13]
eduard.scaueru
programare:teme_2021:tema2_2021_cbd [2022/01/03 22:18] (current)
vlad_matei.draghici [Trimitere temă]
Line 7: Line 7:
  
 Termen de predare: Termen de predare:
-  * Deadline soft: **18.12.2021** +  * Deadline soft: **10.01.2022** 
-  * Deadline hard: **18.12.2021**+  * Deadline hard: **10.01.2022**
  
 Pentru fiecare zi (24 de ore) de întârziere,​ se vor scădea 10 puncte din nota acordată, până la atingerea deadline-ului hard. Pentru fiecare zi (24 de ore) de întârziere,​ se vor scădea 10 puncte din nota acordată, până la atingerea deadline-ului hard.
  
 ====Întrebări==== ====Întrebări====
-Dacă aveți nelămuriri,​ puteți să ne contactați ​pe forumul dedicat [[https://​curs.upb.ro/​mod/​forum/​view.php?​id=87347|temei de casă nr. 2]] sau pe canalul Temei 2.\\+Dacă aveți nelămuriri,​ puteți să ne contactați pe canalul Temei 2.\\
 La orice întrebare vom răspunde în maxim 24 de ore.\\ La orice întrebare vom răspunde în maxim 24 de ore.\\
 Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline. Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline.
Line 19: Line 19:
 ====== Introducere ====== ====== Introducere ======
  
-Este seara de 28.11.2021. Ești la birou și aștepti cu nerăbdare Tema 2 de PCLP care trebuie sa apară din moment în moment. Cu gândul la pointeri și la string-uri adormi cu capul pe masă. Fără să îți dai seama, te trezești în fața intrării unui templu antic. Încrezător pașești în necunoscut în aventura visului ​tau.+Este seara de 28.11.2021. Ești la birou și aștepti cu nerăbdare Tema 2 de PCLP care trebuie sa apară din moment în moment. Cu gândul la pointeri și la string-uri adormi cu capul pe masă. Fără să îți dai seama, te trezești în fața intrării unui templu antic. Încrezător pașești în necunoscut în aventura visului ​tău.
  
 ====== Organizarea temei ====== ====== Organizarea temei ======
Line 27: Line 27:
 Urmăriți indicațiile din fișierele **Task1.c**,​ **Task2.c**,​ **Task3.c** și completați funcțiile notate cu **TODO**. În fișierele **Task1.c**,​ **Task2.c** și **Task3.c** se pot implementa și funcții adiționale și în fișierul **utils.h** se pot declara.</​note>​ Urmăriți indicațiile din fișierele **Task1.c**,​ **Task2.c**,​ **Task3.c** și completați funcțiile notate cu **TODO**. În fișierele **Task1.c**,​ **Task2.c** și **Task3.c** se pot implementa și funcții adiționale și în fișierul **utils.h** se pot declara.</​note>​
  
-===== Task 1 - Cuvinte magice (50p) =====+===== Task 1 - Cuvinte magice (40p) =====
  
 Cum intri în templul magic te trezești într-o cameră uriașă sub forma unei matrici de dimensiune N * M. O voce îți spune că te afli în templul lui magic și că pentru a trece la camera următoare trebuie să te miști prin cameră (prin matrice) după un traseu bine stabilit. Pentru a face lucrurile mai interesante,​ vocea îți spune că traseul necesar trebuie decodificat de către tine apoi îți spune un cod magic. Cum intri în templul magic te trezești într-o cameră uriașă sub forma unei matrici de dimensiune N * M. O voce îți spune că te afli în templul lui magic și că pentru a trece la camera următoare trebuie să te miști prin cameră (prin matrice) după un traseu bine stabilit. Pentru a face lucrurile mai interesante,​ vocea îți spune că traseul necesar trebuie decodificat de către tine apoi îți spune un cod magic.
Line 36: Line 36:
  
 Cuvintele sunt de 3 tipuri: Cuvintele sunt de 3 tipuri:
-  - Cuvintele care încep cu litera ‘a’ sunt de forma “ax1x2x3x4” unde xi sunt cifre (1<= i <= 4). Fiecare cifră este corespunzatoare unei direcții de mișcare (x1 – dreapta , x2 – sus, x3 – stânga, x4 - jos în matrice). Cifra maximă dictează mișcarea din traseu corespunzătoare. Ex: Codul “a1235” are cifra maximă (5) pe poziția lui x4, deci următoarea mișcare din traseu este în jos. 
  
-  ​- Cuvintele care încep cu litera ‘b’ sunt de forma “bx1x2…xn” unde xi sunt cifre (1<= i <= n). Considerăm numărul format din cifrele “x1x2…xn” ca un număr K. Fie X numărul format din ultimele 2 cifre ale lui K (xn-1xn). În funcție de proprietățile de palindrom și prim ale lui K respectiv X avem următoarele 4 situații:+**1.** Cuvintele care încep cu litera ‘a’ sunt de forma “ax1x2x3x4” unde xi sunt cifre (1<= i <= 4). Fiecare cifră este corespunzătoare unei direcții de mișcare (x1 – dreapta , x2 – sus, x3 – stânga, x4 jos în matrice). Cifra maximă dictează mișcarea din traseu corespunzătoare. 
 + 
 +Ex: Codul “a1235” are cifra maximă (5) pe poziția lui x4, deci următoarea mișcare din traseu este în jos. 
 + 
 +**2.** ​Cuvintele care încep cu litera ‘b’ sunt de forma “bx1x2…xn” unde xi sunt cifre (1<= i <= n). Considerăm numărul format din cifrele “x1x2…xn” ca un număr K. Fie X numărul format din ultimele 2 cifre ale lui K (xn-1xn). În funcție de proprietățile de palindrom și prim ale lui Krespectiv X avem următoarele 4 situații:
      - K palindrom, X prim: stânga      - K palindrom, X prim: stânga
      - K palindrom, X NU este prim: dreapta      - K palindrom, X NU este prim: dreapta
Line 45: Line 48:
 Ex: Codul “b121” are K = 121 și X = 21. K este palindrom și X nu este prim => următoarea mișcare din traseu este în dreapta. Ex: Codul “b121” are K = 121 și X = 21. K este palindrom și X nu este prim => următoarea mișcare din traseu este în dreapta.
  
-  - Cuvinte care încep cu litera ‘c’ sunt de forma “cnkx1x2…xn” unde n, k, xi sunt cifre. Fie S suma primelor k cifre luate din k în k în mod circular. S = x0 + xk + x2k + … (dacă indicele trece peste n atunci se resetează la 0). În funcție de restul împărțirii lui S la 4 avem următoare situații:+**3.** ​Cuvinte care încep cu litera ‘c’ sunt de forma “cnkx1x2…xn”unde n, k, xi sunt cifre. Fie S suma primelor k cifre luate din k în k în mod circular. S = x0 + xk + x2k + … (dacă indicele trece peste n atunci se resetează la 0). În funcție de restul împărțirii lui S la 4 avem următoarele ​situații:
      - S % 4 = 0 => stânga      - S % 4 = 0 => stânga
      - S % 4 = 1 => sus      - S % 4 = 1 => sus
      - S % 4 = 2 => dreapta      - S % 4 = 2 => dreapta
      - S % 4 = 3 => jos      - S % 4 = 3 => jos
-Ex: Codul “c64123456” are n = 6 (6 cifre), k = 4 și cifrele 123456. Suma dorită este: S = x0 + x4 + x8 % 6 + x12 % 6 = 1 + = 10+Ex: Codul “c64123456” are n = 6 (6 cifre), k = 4 și cifrele 123456. Suma dorită este: S = x0 + x4 + x8 % 6 + x12 % 6 = 1 + = 10
 Restul împărțirii este: S % 4 = 10 % 4 = 2 => următoarea mișcare din traseu este în dreapta. Restul împărțirii este: S % 4 = 10 % 4 = 2 => următoarea mișcare din traseu este în dreapta.
 +
 +== Task 1.1 - Cuvinte magice tipul '​a'​ (8p) ==
 +
 +Sa se determine traseul corect pentru cuvinte doar de tipul '​a'​.
 +
 +== Task 1.2 - Cuvinte magice tipul '​b'​ (8p) ==
 +
 +Sa se determine traseul corect pentru cuvinte doar de tipul '​b'​.
 +
 +== Task 1.3 - Cuvinte magice tipul '​c'​ (8p) ==
 +
 +Sa se determine traseul corect pentru cuvinte doar de tipul '​c'​.
 +
 +== Task 1.4 - Cuvinte magice de orice tip (16p) ==
 +
 +Sa se determine traseul corect pentru orice tip de cuvinte.
  
 **//​Input//​** **//​Input//​**
Line 161: Line 180:
  
 <note warning> <note warning>
-Numerele vor fi **obligatoriu** stocate sub forma de șiruri de caractere. Nu se vor acorda cele 20 de puncte ​daca numerele sunt convertite în tipuri numerice.+Numerele vor fi **obligatoriu** stocate sub forma de șiruri de caractere. Nu se vor acorda cele 20 de puncte ​dacă numerele sunt citite/convertite ​cu totul în tipuri numerice ​(int, long long, etc.), pentru a efectua simpla adunare a acestora
 </​note>​ </​note>​
  
Line 213: Line 232:
 Folosirea oricăror structuri de date în afara șirurilor de caractere și vectori va duce la depunctarea totală a cerinței. Folosirea oricăror structuri de date în afara șirurilor de caractere și vectori va duce la depunctarea totală a cerinței.
 </​note>​ </​note>​
 +
 +După ce ai rezolvat și ultima provocare vocea stranie te felicită și îți spune că acum ești pregatit de Tema 2 la PCLP. La auzul acestor cuvinte te trezești. "A fost doar un vis", îți spui și vezi că tocmai s-a postat Tema 2. 
  
 ==== Trimitere temă ==== ==== Trimitere temă ====
Line 227: Line 248:
 <note warning> <note warning>
   - Arhiva trebuie să fie de tipul **zip**.   - Arhiva trebuie să fie de tipul **zip**.
-  - Makefile-ul și testele vor fi cele din aceasta arhiva: {{:​programare:​teme_2021:​tema2_skel.zip|}}+  - Makefile-ul și testele vor fi cele din aceasta arhiva: {{:​programare:​teme_2021:​templu_skel.zip|}}
 </​note>​ </​note>​
  
programare/teme_2021/tema2_2021_cbd.1637662423.txt.gz · Last modified: 2021/11/23 12:13 (external edit)
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