This shows you the differences between two versions of the page.
programare:teme_2022:tema1_2022_cbd [2022/11/02 11:28] razvan.nitu1305 created |
programare:teme_2022:tema1_2022_cbd [2022/11/21 11:06] (current) ioana.dabelea [Trimitere temă] |
||
---|---|---|---|
Line 37: | Line 37: | ||
Pentru a doua cerinta va trebui sa implementati citirea unei expresii si evaluarea acesteia tinand cont si de precendenta operatorilor. | Pentru a doua cerinta va trebui sa implementati citirea unei expresii si evaluarea acesteia tinand cont si de precendenta operatorilor. | ||
- | Astfel, pentru expresia "3+3*4/5", veti evalua operatiile tinand cont de faptul ca operatiile '*' si '/' au precedenta mai mare fata de '+' si '-'. In consecinta, pentru acesta sarcina, rezultatul va fi: 3+3*4/5 = 3+12/5 = 3+2.4 = 5.4 . | + | Astfel, pentru expresia "3+3*4/5", veti evalua operatiile tinand cont de faptul ca operatiile '*' si '/' au precedenta mai mare fata de '+' si '-'. In consecinta, pentru acesta sarcina, rezultatul expresiei anterioare va fi: 3+3*4/5 = 3+12/5 = 3+2.4 = 5.4 . |
+ | ===== Task 3 ===== | ||
+ | Pentru a 3-a cerinta va trebui sa implementeti un nou operator, operatorul `#`. | ||
+ | Operatorul `#` este definit astfel: a#b = (a+b)*(a+b). | ||
+ | Operatorul `#` are precedenta mai mare ca `+`/`-`, dar mai mica ca `*`/`/`. | ||
+ | Astfel, pentru aceasta cerinta, rezultatul expresiei "1+2#3*4" va fi: 1+2#3*4 = 1+2#12 = 1 + (2 + 12)*(2 + 12) = 1 + 196 = 197. | ||
+ | |||
+ | ==== Precizari ===== | ||
+ | |||
+ | Checker-ul se asteapta ca fiecare task sa fie separat intr-un fisier separat. Astfel, este necesar ca Makefilul pe care il puneti in arhiva alaturi de fisierele sursa sa creeze binarele cu numele **task1**, **task2**, **task3**. Makefile-ul oferit alaturi de checker respecta aceasta cerinta, astfel, in cazul in care modificati Makefile-ul, asigurati-va ca binarele finale vor avea numele corespunzatoare. | ||
+ | |||
+ | Dacă aveți nelămuriri, puteți să ne contactați pe forumul dedicat [[https://curs.upb.ro/2022/mod/forum/view.php?id=73597|temei de casă nr. 1]] sau pe [[https://teams.microsoft.com/l/channel/19%3ad9373370b32846478e256ffcbf942962%40thread.tacv2/Tema%25201?groupId=6105be57-b728-4078-9f4a-00dc43e83e70&tenantId=2d8cc8ba-8dda-4334-9e5c-fac2092e9bac|canalul Temei 1]].\\ | ||
+ | La orice întrebare vom răspunde în maxim 24 de ore.\\ | ||
+ | Nu se acceptă întrebări în ultimele 24 de ore înainte de deadline. | ||
+ | |||
+ | |||
+ | |||
+ | ==== Trimitere temă ==== | ||
+ | |||
+ | Tema va fi trimisă folosind [[https://vmchecker.cs.pub.ro/ui/#PCCB|vmchecker]], cursul **Programarea Calculatoarelor (CB & CD)**. \\ | ||
+ | |||
+ | Toate temele sunt testate în mod automat pe [[https://vmchecker.cs.pub.ro/ui/|VMChecker]]. | ||
+ | Autentificarea se face folosind numele de utilizator și parola de pe moodle / Teams. | ||
+ | |||
+ | Din meniul //drop-down// selectați cursul corespunzător; în cazul de față: **Programarea Calculatoarelor (CB & CD)**. | ||
+ | În meniul //didebar//, din partea stângă a paginii, selectați tema pentru care veți face submisia. | ||
+ | |||
+ | Arhiva temei se va încărca pe checker folosind formularul de submisie din tabul **Trimitere solutii**. | ||
+ | |||
+ | Rezultatele vor fi disponibile în tabul **Rezultate**.\\ | ||
+ | **Citiți cu atenție** informațiile afișate în **Rezultate** pentru a vă asigura că tema a fost rulată cu succes; o eroare comună este dată de faptul că conținutul arhivei nu respectă structura dorită (ex. fișierele sunt într-un alt director).\\ | ||
+ | |||
+ | **Punctajul final al temei** este afișat la finalul informațiilor afișate în **Rezultate**. | ||
+ | |||
+ | Conținutul arhivei va fi următorul: | ||
+ | - Fișierele **.c**, **.h** (dacă este cazul) care conține implementarea temei. | ||
+ | - Fișierul **Makefile**. | ||
+ | - Un fișier [[https://en.wikipedia.org/wiki/README|README]] în care descrieți rezolvarea temei. | ||
+ | |||
+ | <note warning> | ||
+ | - Arhiva trebuie să fie de tipul zip. | ||
+ | - Makefile-ul și testele vor fi cele din aceasta arhiva: {{:programare:teme_2022:calculator.zip|calculator.zip}} | ||
+ | - Puteți utiliza regula archive din fișerul Makefile pentru a vă genera arhiva zip. Aceasta va adăuga fișierele Makefile, README și orice fișier .c și .h din directorul curent. | ||
+ | <code> | ||
+ | make archive | ||
+ | </code> | ||
+ | </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 === | ||
+ | Lista nu este exhaustivă. | ||
+ | * O temă care nu compilează și nu a rulat pe **vmchecker** nu va fi luată în considerare | ||
+ | * O temă care nu rezolvă cerința și trece testele prin alte mijloace nu va fi luată în considerare | ||
+ | * **NU acceptăm teme copiate**. În cazul unei teme copiate se scade punctajul aferent temei din punctajul total. | ||
+ | * [-20.0]: Nerezolvarea tuturor erorilor și warningurilor de coding style |