Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2021-05-13 16:14:07.
Revizia anterioară   Revizia următoare  

Ghidul de adăugare al problemelor interactive

Problemele interactive se folosesc de un program grader şi de un program interactor. Atunci când este evaluată problema pe infoarena, programul interactor este linkuit împreună cu sursă voastră de către programul connect-adăugare-interactive?action=download&file=connect.c&safe_only=false (o scurtă prezentare a programului connect/documentaţie/tutorial)

Graderul-adăugare-interactive?action=download&file=grader_eval.cpp&safe_only=false şi interactorul-adăugare-interactive?action=download&file=grader_interact.cpp&safe_only=false au în comun verdictele posibile de evaluare (enum Status) şi o constanţa pentru verificarea integrităţii fişierului de ieşire.
Exemplele de grader şi interactor sunt folosite la problema cbinteractiv , cu excepţia constanţei de verificare care este diferită.

Această constanţa de verificare a integrităţii este necesară deoarece graderul şi interactorul comunica la rândul lor printr-un fişier care poate fi (dar nu ar trebui) să fie accesat şi de către sursă concurentului. Pentru a combate această posibilă vulnerabilitate există o soluţie foarte uşor de implementat, anume interactorul afişează un număr secret şi verdictul sau în fişierul comun, iar graderul verifică dacă numărul din fişier coincide cu numărul sau secret. Nu faceţi graderele reale din probleme publice deoarece există riscul că cineva să încerce să le spargă.

Graderul comunica mai departe cu monitorul de evaluare prin stdout şi stderr. Pe stdout el transmite punctajul, iar pe stderr transmite mesajul de evaluare.

Exemplele de grader, interactor şi connect sunt încărcate în ataşamentele acestei pagini.