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 = 0punctaj_total = 100 și nr_erori = 99 ⇒ nota_finala = 1punctaj_total = 80 și nr_erori = 30 ⇒ nota_finala = 80punctaj_total = 80 și nr_erori = 31 ⇒ nota_finala = 49Arhiva pe care o veţi urca pe VMChecker va trebui să conţină în directorul rădăcină:
READMEMain.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)