This shows you the differences between two versions of the page.
programare:teme_2018:tema1_2018_ca [2018/10/17 19:51] teodora.serbanescu |
programare:teme_2018:tema1_2018_ca [2018/10/30 20:49] (current) teodora.serbanescu |
||
---|---|---|---|
Line 4: | Line 4: | ||
**Termen de predare**: 05.11.2018, ora 23:55 | **Termen de predare**: 05.11.2018, ora 23:55 | ||
+ | |||
+ | <note> | ||
+ | **Update** | ||
+ | |||
+ | 19.10.2018 - Corectare checker (again) | ||
+ | |||
+ | 25.10.2018 - Updatare checker de coding style; informatii despre checker | ||
+ | |||
+ | 26.10.2018 - Updatare checker | ||
+ | |||
+ | 30.10.2018 - Modificare checker + adăugare pe vmchecker | ||
+ | </note> | ||
===== Obiectivele temei ===== | ===== Obiectivele temei ===== | ||
Line 62: | Line 74: | ||
2 10 32 | 2 10 32 | ||
| | ||
- | Histograma realizată de programul scris de student arată astfel (numerele reprezinta codificările serialelor): | + | Histograma realizată de programul scris de student arată astfel (numerele reprezintă codificările serialelor): |
1 * * * * . . . . . . | 1 * * * * . . . . . . | ||
2 * * * . . . . . . . | 2 * * * . . . . . . . | ||
Line 130: | Line 142: | ||
82.13 | 82.13 | ||
- | //Date de ieșire// | + | //Date de ieșire:// |
245.5412 | 245.5412 | ||
- | - | ||
Line 139: | Line 151: | ||
1000.0000 2 | 1000.0000 2 | ||
3 | 3 | ||
- | | ||
- | <note> | ||
- | Checkerul verifică datele cu o precizie de exact 4 zecimale. De exemplu, afișarea numărului 1 ca 1.000 sau 1.00000 (cu 3 sau cu 5 zecimale) nu va fi punctată, deoarece checkerul este construit să acorde punctajul doar pentru numere de forma 1.0000 (4 zecimale). | ||
- | </note> | ||
**Explicatie:** | **Explicatie:** | ||
Pentru datele de intrare, prima valoare reprezintă N, adică numărul de valori înregistrate de fotorezistență, iar următoarele N numere reprezintă valorile efective înregistrate. Pentru datele de ieșire, primele 5 rânduri sunt pentru: media aritmetică, media geometrică, media armonică, media pătratică și abaterea standard. Următoarele două rânduri sunt pentru minim și maxim și numărul de apariții, iar ultimul rând arată lungimea celei mai lungi secvențe crescătoare. | Pentru datele de intrare, prima valoare reprezintă N, adică numărul de valori înregistrate de fotorezistență, iar următoarele N numere reprezintă valorile efective înregistrate. Pentru datele de ieșire, primele 5 rânduri sunt pentru: media aritmetică, media geometrică, media armonică, media pătratică și abaterea standard. Următoarele două rânduri sunt pentru minim și maxim și numărul de apariții, iar ultimul rând arată lungimea celei mai lungi secvențe crescătoare. | ||
- | + | ||
+ | <note> | ||
+ | Checkerul verifică datele cu o precizie de exact 4 zecimale. De exemplu, afișarea numărului 1 ca 1.000 sau 1.00000 (cu 3 sau cu 5 zecimale) nu va fi punctată, deoarece checkerul este construit să acorde punctajul doar pentru numere de forma 1.0000 (4 zecimale). | ||
+ | </note> | ||
Ajutați studentul să scrie acest program pentru a vedea dacă cineva deschide frigiderul său în timpul nopții. În viitor, va adăuga și un buzzer care sa facă zgomot atunci când frigiderul e deschis și o cameră de filmat pentru a îl prinde pe hoț. | Ajutați studentul să scrie acest program pentru a vedea dacă cineva deschide frigiderul său în timpul nopții. În viitor, va adăuga și un buzzer care sa facă zgomot atunci când frigiderul e deschis și o cameră de filmat pentru a îl prinde pe hoț. | ||
Line 172: | Line 184: | ||
* O temă care compilează, dar care nu trece niciun test, nu va fi punctată. | * O temă care compilează, dar care nu trece niciun test, nu va fi punctată. | ||
- | **Checkerul** poate fi descărcat de aici: {{ :programare:teme_2018:tema01_ca2018_checker.zip }} | + | ===== Checker ===== |
+ | |||
+ | **Checkerul** poate fi descărcat de aici: {{ :programare:teme_2018:tema01_ca2018_checker-v7.zip }} | ||
+ | <note> | ||
+ | Tema va fi verificată automat cu un script. În caz că aveți erori, checkerul va penaliza cu 15p din punctajul total obținut (conform regulamentului). Pentru a sti cum sa preveniți aceste probleme, vă rugam să parcurgeți pagina de [[programare:coding-style|coding style]] de pe ocw. | ||
+ | </note> | ||
+ | |||
+ | <note> | ||
+ | În cazul în care fișierul cs.py (cel care verifică coding style-ul) nu e executabil, atunci va apărea urmatoarea eroare (poza de mai jos). Acest lucru se rezolvă prin rularea comenzii <code> chmod u+x cs.py </code> în folderul cu fișierul cs.py. | ||
+ | </note> | ||
+ | {{ :programare:teme_2018:eroare-cs.jpg?800X200 }} | ||
+ | |||
+ | * În lipsa Makefile-ului, sau dacă sursele au erori de compilare, checker-ul nu va putea rula și nu va verifica tema. Punctajul aferent este 0 în acest caz. Veți vedea mesajul de mai jos: | ||
+ | {{ :programare:teme_2018:makefile.png?800X200 }} | ||
+ | * Fișierul README valorează 5 puncte. Acestea nu se primesc daca fișierul lipsește sau e gol. Mesajele afișate sunt cele de mai jos: | ||
+ | {{ :programare:teme_2018:noreadme.png?800X200 }} | ||
+ | {{ :programare:teme_2018:emptyreadme.png?800X200 }} | ||
+ | * Odată cu rularea testelor este verificat și coding style-ul. Dacă apar erori de coding style, checkerul va scădea 15 puncte din punctajul obținut. Mesajul arătat este găsit mai jos. De asemenea, checkerul menționează unde sunt erorile pentru a fi corectate. | ||
+ | {{ :programare:teme_2018:cs.png?800X300 }} | ||
+ | * Sfat: <code> cat -e nume_fișier </code> afișează conținutul fișierului și caracterele albe (spațiu, new line, tab etc). Este util pentru a vedea de ce nu trec anumite teste. | ||
+ | * Makefile: | ||
+ | <code> | ||
+ | build: | ||
+ | gcc -std==c99 -Wall -Wextra nume_sursa_1 -o nume_executabil_1 -lm | ||
+ | gcc -std==c99 -Wall -Wextra nume_sursa_2 -o nume_executabil_2 -lm | ||
+ | clean: | ||
+ | rm -rf nume_executabil_1 nume_executabil_2 | ||
+ | </code> | ||
+ | |||
+ | <note> | ||
+ | Regula de build din makefile conține niște argumente noi, care permit declararea variabilelor în cadrul for-urilor. Ca să vă asigurați că tema va fi rulată corect pe vmchecker, e recomandat să modificați makefile-ul ca mai sus. | ||
+ | </note> | ||