This shows you the differences between two versions of the page.
programare:teme_2021:tema1_2021_cbd [2021/11/08 13:55] razvan.nitu1305 [Trimitere temă] |
programare:teme_2021:tema1_2021_cbd [2021/12/02 16:25] (current) razvan.nitu1305 [Trimitere temă] |
||
---|---|---|---|
Line 137: | Line 137: | ||
- afisati doar numarul rezultat, altfel checker-ul nu va lua in considerare testul | - afisati doar numarul rezultat, altfel checker-ul nu va lua in considerare testul | ||
- | ===== Bonus 1 - Operanzi cu dimensiuni ciudate (10p) ===== | + | ===== Bonus 1 - Operanzi cu dimensiuni ciudate (20p) ===== |
In cadrul acestui task vom extinde implementarea de la Task 2 pentru a executa instrucțuni ale căror operanzi pot avea **orice** dimensiune din intervalul [1, 16]. În continuare, operanzii for fi citiți de la intrarea standard sub forma **unsigned short**, însă un operand ar putea să se întindă pe 2 citiri succesive. | In cadrul acestui task vom extinde implementarea de la Task 2 pentru a executa instrucțuni ale căror operanzi pot avea **orice** dimensiune din intervalul [1, 16]. În continuare, operanzii for fi citiți de la intrarea standard sub forma **unsigned short**, însă un operand ar putea să se întindă pe 2 citiri succesive. | ||
Line 144: | Line 144: | ||
Exemplu: | Exemplu: | ||
- | **N = 1**, **Dim = 11**. (1+1)*11/16 = 1,375 => se citesc 2 numere de tipul **unsigned short**. Sa presupunem ca acestea sunt 374444 (**10010010010 00100**) si 33792 (**100001 0000000000**). Va trebuie sa facem o operație intre 1170 (**10010010010**) si 289 (**00100 100001**) | + | **N = 1**, **Dim = 11**. (1+1)*11/16 = 1,375 => se citesc 2 numere de tipul **unsigned short**. Sa presupunem ca acestea sunt 37444 (**10010010010 00100**) si 33792 (**100001 0000000000**). Va trebuie sa facem o operație intre 1170 (**10010010010**) si 289 (**00100 100001**) |
</note> | </note> | ||
Line 156: | Line 156: | ||
- | ===== Bonus 2 - Precedenta operatorilor (10p) ===== | + | ===== Bonus 2 - Precedenta operatorilor (20p) ===== |
Implementati precedenta operatilor, astfel incat * si / au precedenta egala intre ei, insa precdenta mai mai mare ca + si -. | Implementati precedenta operatilor, astfel incat * si / au precedenta egala intre ei, insa precdenta mai mai mare ca + si -. | ||
Line 173: | Line 173: | ||
==== Trimitere temă ==== | ==== Trimitere temă ==== | ||
- | Tema va fi trimisă folosind [[https://v2.vmchecker.grid.pub.ro/homepage/|vmchecker]], cursul **Programarea Calculatoarelor (CB & CD)**. \\ | + | Tema va fi trimisă folosind [[https://vmchecker.cs.pub.ro/ui/#PCCB|vmchecker]], cursul **Programarea Calculatoarelor (CB & CD)**. \\ |
Formatul arhivei va fi următorul: | Formatul arhivei va fi următorul: | ||
- | - {task1.c task2.c task3.c task4.c} | + | - {task1.c task2.c task3.c task4.c Makefile} |
- Un fișier [[https://en.wikipedia.org/wiki/README|README]] în care vă descrieți rezolvarea taskurilor. | - Un fișier [[https://en.wikipedia.org/wiki/README|README]] în care vă descrieți rezolvarea taskurilor. | ||
+ | |||
<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 arhiva de test | + | - Makefile-ul și testele vor fi cele din aceasta arhiva: {{:programare:teme_2021:miniprocesor.zip|}} |
</note> | </note> | ||
+ | <note warning> | ||
+ | Nu includeti fisierele checkerului in arhiva voastra. **Nu folositi Makefile.checker** pe post | ||
+ | de Makefile in arhiva voastra: asta va duce la recursivitate infinita pe vmchecker. Puteti sa folositi | ||
+ | direct makefile-ul prezent in arhiva (**Makefile, nu Makefile.checker**). | ||
+ | </note> | ||
+ | |||
+ | <note warning> | ||
+ | In cazul in care testele va trec local, insa pica pe vmchecker cel mai probabil aveti | ||
+ | o sursa de "undefined behavior in cod". Pentru a va asigura ca scapati de aceste probleme, | ||
+ | compilati cu flagul de compilare `-Wall` si rezolvati toate warning-urile. | ||
+ | </note> | ||
=== Listă depunctări === | === Listă depunctări === | ||
Line 195: | Line 207: | ||
* [-5.0]: abordare ineficientă | * [-5.0]: abordare ineficientă | ||
* [-10.0]: variabile globale | * [-10.0]: variabile globale | ||
+ | * [-25.0]: Daca se folosesc vectori pentru stocarea bitilor | ||
* [-100.0]: TOT punctajul, în cazul în care se încearcă "obținerea" punctajului pe temă folosind alte metode decât cele normale | * [-100.0]: TOT punctajul, în cazul în care se încearcă "obținerea" punctajului pe temă folosind alte metode decât cele normale | ||
* în cadrul cursului de programare nu avem ca obiectiv rezolvarea în cel mai eficient mod posibil a programelor; totuși, ne dorim ca abordarea să nu fie una ineficientă, de genul să nu folosiți instrucțiuni repetitive acolo unde clar nu era cazul, etc. | * în cadrul cursului de programare nu avem ca obiectiv rezolvarea în cel mai eficient mod posibil a programelor; totuși, ne dorim ca abordarea să nu fie una ineficientă, de genul să nu folosiți instrucțiuni repetitive acolo unde clar nu era cazul, etc. | ||