Revizia anterioară Revizia următoare
Aceasta pagina e in constructie
LimeEval
<br><br>
Screenshots

<br><br><br>
Structura de fisiere a evaluatorului
<br><br><br>
Instructiuni de folosire
<br><br><br>
Intrebari frecvente
- 1. Runde
- 2. Compilatoare
- 3. Compilare
- 4. Evaluare
- 5. Runtime
<br><br><br>
Sursa verif
Verificatorul este necesar pentru a puncta fisierul OUT produs de concurent. Trebuie pus sub forma de executabil in fisierul cu testele problemei.
Mai jos este o sursa generala de verificator. Sursa are implementate functii de comparare bit la bit, si a numarului din fisier. Pentru probleme cu solutii multiple sau un alt mod de verificare vor trebui implementate si alte functii de verificare a rezultatului.
Shimbati #define-urile INFILE, OUTFILE, si OKFILE cu numele corespunzatoare.
#include <stdio.h>
/* !!! schimba <problema> cu numele problemei */
#define INFILE "problema.in"
#define OUTFILE "problema.out"
#define OKFILE "problema.ok"
FILE *fIN, *fOUT, *fOK, *fV;
bool openFiles(); /* deschide fisierele si verifica existenta lor */
void closeHandles(); /* inchide fisierele */
bool compareBitByBit(); /* compara out si ok, bit la bit */
bool compareNumber(); /* compara numerele din out si ok */
int main()
{
if(!openFiles()) return 0;
if (compareBitByBit())
fprintf(fV, "10\nCorect");
else
fprintf(fV, "0\nGresit");
closeHandles();
return 0;
}
bool openFiles()
{
fIN = fopen(INFILE, "r");
fOUT = fopen(OUTFILE, "r");
fOK = fopen(OKFILE, "r");
fV = fopen("punctaj.verif", "w");
if (!fIN)
{
fprintf(fV, "0\nFisier IN lipsa.");
closeHandles();
return false;
}
if (!fOUT)
{
fprintf(fV, "0\nFisier OUT lipsa.");
closeHandles();
return false;
}
if (!fOK)
{
fprintf(fV, "0\nFisier OK lipsa.");
closeHandles();
return false;
}
return true;
}
void closeHandles()
{
if (fIN) fclose(fIN);
if (fOUT) fclose(fOUT);
if (fOK) fclose(fOK);
if (fV) fclose(fV);
}
bool compareBitByBit()
{
char b1, b2;
int ret1, ret2;
while (1)
{
ret1 = fscanf(fOUT, "%c", &b1);
ret2 = fscanf(fOK, "%c", &b2);
if (ret1 > 0 && ret2 <= 0) return false;
if (ret1 <= 0 && ret2 > 0) return false;
if (b1 != b2) return false;
if (ret1 <= 0 && ret2 <= 0) return true;
}
return true;
}
bool compareNumber()
{
int nr1, nr2;
fscanf(fOUT, "%d", &nr1);
fscanf(fOK, "%d", &nr2);
if (nr1 != nr2) return false;
return true;
}