答案檢查器

ighshssjjsjs發表於2024-05-30

五.答案檢查器
本文將引導您寫一個自定義的checker(chk.cpp)。
按照套路,uoj的校驗器也應該使用testlib編寫。
下面是A+B Problem的校驗器:

 #include "testlib.h"

int main(int argc, char* argv[])
{
registerTestlibCmd(argc, argv);

int pans,jans;
pans=ouf.readInt();      // 讀取選手輸出
jans=ans.readInt();      // 讀取答案

if (pans == jans)
quitf(_ok, "Correct.");
else
    quitf(_wa, "WA! expect=%d recieve=%d", jans, pans);
}

在呼叫registerTestlibCmd之後,我們可以使用下面的三個流:

inf : 輸入資料
ouf : 選手輸出
ans : 標準輸出
從流中讀取資料的方式,和【資料檢驗器】一致。

如果程式AC或者爆零,可以使用quitf()。但是如果想給選手部分分,使用下面的程式碼:

 quitp(ceil(100.0 * p / a) / 100, "QAQ");

相關文章