Administrativ
Laboratoare
Tema
Teste
Resurse utile
Alte resurse
Arhiva Teme
Administrativ
Laboratoare
Tema
Teste
Resurse utile
Alte resurse
Arhiva Teme
Server
și să conțină elemente de tip IToken
(ex. Stack<IToken> myStack
). O temă care nu respectă acest aspect nu va fi punctată.
Va trebui să implementați un calculator, care va primi ca input operații matematice scrise în numere romane, să calculați valoarea transformând în numere arabe [2] și să afișați răspunsul în format roman [3]. În calcularea valorii trebuie să țineți cont de ordinea operațiilor iar pentru acest lucru o să folosiți forma poloneză [1].
IServer
, IBracketsFactory
, IOperatorsFactory
și IOperandsFactory
trebuie să fie singleton. O temă care nu respectă acest aspect nu va fi punctată.
IBracketsFactory
, IOperatorsFactory
și IOperandsFactory
trebuie să respecte pattern-ul Factory. O temă care nu respectă acest aspect nu va fi punctată.
Scheletul de cod (directorul src) conține următoarele:
checker/fileIO
- conține logica de I/O și de comparare cu fișierele de referințăchecker/checkstyle
- conține utilitarul și regulile de verificare de coding-stylechecker/resources
- conține fișierele de input și referințăhomework/interfaces
- conține interfețele pe care trebuie să le implementațiÎn cadrul fiecărui fișier de interfață veți găsi, în comentarii, o explicare laborioasă a fiecărei metode și a fiecărui câmp.
În rădăcina directorului src se află și punctul de intrare al aplicației, clasa Main
. În această metodă se inițializează Evaluator
-ul și se deschid fișierele de input, output, referință și subscriberi. După care Evaluator
-ul face următoarele 3 acțiuni, pe instanța singleton a IServer
:
subscribe
pentru fiecare operator (linie) din fișierul de subscriberipublish
pentru fiecare comandă (linie) din fișierul de inputgetResults
și compară cu liniile din fișierul de referință
Rularea se face în felul următor: $ java Main subscribers_file input_file output_file reference_file
+ - * / log
I + II ( XX - X ) + [ V - I ] [ ( MMM - M ) + sqrt IV ] II ^ IV I + II + II + log IV III / ( I - I )
III XIV IMPOSSIBRU IMPOSSIBRU VII IMPOSSIBRU
1 | 5 | 10 | 50 | 100 | 500 | 1000 |
---|---|---|---|---|---|---|
I | V | X | L | C | D | M |
0 | 1 | 2 | 3 |
---|---|---|---|
+, - | *, / | ^ | sqrt, log |
1.38629436112 → I
(unu în format roman) și -1.38629436112 → - II
(pentru că -2 < -1.38629436112 < -1
)).
Exemple:
punctaj_total = 100
și nr_erori = 200
⇒ nota_finala = 0
punctaj_total = 100
și nr_erori = 99
⇒ nota_finala = 1
punctaj_total = 80
și nr_erori = 30
⇒ nota_finala = 80
punctaj_total = 80
și nr_erori = 31
⇒ nota_finala = 49
Arhiva pe care o veţi urca pe VMChecker va trebui să conţină în directorul rădăcină:
README
Main.java
modificat (apelarea metodei run
din Evaluator
)homework
cu interfețele din schelet și implementarea voastrăNu aveți voie să modificați interfețele în niciun fel
\r
(CR - carriage return)