• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 33,  comments - 33,  trackbacks - 0

            前做了一個簡單實用的本地程序評測機,用作學校某比賽的評測(該比賽不是在線比賽,而是做完后自己發代碼然后我們自己手動萍。。囧),該程序是一個本地評測系統,用戶輸入單文件代碼或可執行程序,和輸入數據和正確的輸出數據,系統根據這些數據對代碼或程序進行評測。
            評測結果有:
            Accept   //通過
            Compile Error  //編譯錯誤
            Worng Answer  //答案錯誤
            Time Limit Exceeded //超時
            Memory Limit Exceeded //超內存
            Presentation Error //輸出格式錯誤
            System Error  //系統錯誤
            下面簡單聊聊實現的過程:

            一、實現細節
            1.1 編譯功能
            類:CompilerHelper
            函數:static int compile(const std::string& sSourceFile, //源文件路徑
             const std::string& sOutputFile);//執行代碼路徑
            流程如下:
            生成編譯器輸入參數(編譯器路徑、文件路徑、包含路徑、庫路徑)在config.txt定義
            -> 重定向in和out -> 創建進程編譯->等待完畢后返回執行結果

            1.2 評測功能
            需要獲得 執行代碼路徑、輸入文件、期待輸出的答案文件、本次執行程序的實際輸出文件、
            時間、內存、是不是SPJ

            監視器線程: 監視進程的執行時間、使用內存的信息
            流程:
            輸入信息-> 根據輸入文件產生輸入參數->創建進程->監視器開啟->等待直到結束
            ->返回!=0?"System Error" : 記錄本次執行所需要的時間和內存->是否SPJ?啟動spj比較器
            :啟動文件比較器

            啟動文件比較器: 比較實際的和答案的差異,完全相同的AC,只存在空格的差異為PE,其他情況的WA
            spj比較器: 使用自己編寫的spj程序對兩個文件評測

            1.3 測試套件
            實現多個測試用例(多個輸入文件和輸出文件)
            可以通過配置文件進行配置
            配置文件如下:
            [TestSuite]
            TestCaseCount=19 //用例個數
            IsSpecialJudge=0 //是否SPJ
            CodeFile=main.cpp //源文件,可設為NULL
            SPJExe=lowSPJ.exe //SPJ路徑
            ExecuteFile=NULL //如設置了就不啟用編譯功能
            [TestCase_n]  //第n個用例
            TimeLimit=1000  //時間限制
            MemoryLimit=65535 //內存限制(KB)
            StdInputFile=data1.txt //輸入文件
            AnswerFile=output1.txt //答案
            每個用例將new一個judgerunner實例

            二、依賴庫
            個人開發的mtLibrary中的Common、Thread、Process庫模塊

            三、運行效果
            配置文件示例
            [TestSuite]
            TestCaseCount=19
            IsSpecialJudge=0
            CodeFile=main.cpp
            SPJExe=NULL
            [TestCase_1]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data1.txt
            AnswerFile=output1.txt
            [TestCase_2]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data2.txt
            AnswerFile=output2.txt
            [TestCase_3]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data3.txt
            AnswerFile=output3.txt
            [TestCase_4]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data4.txt
            AnswerFile=output4.txt
            [TestCase_5]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data5.txt
            AnswerFile=output5.txt
            [TestCase_6]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data6.txt
            AnswerFile=output6.txt
            [TestCase_7]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data7.txt
            AnswerFile=output7.txt
            [TestCase_8]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data8.txt
            AnswerFile=output8.txt
            [TestCase_9]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data9.txt
            AnswerFile=output9.txt
            [TestCase_10]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data10.txt
            AnswerFile=output10.txt
            [TestCase_11]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data11.txt
            AnswerFile=output11.txt
            [TestCase_12]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data12.txt
            AnswerFile=output12.txt
            [TestCase_13]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data13.txt
            AnswerFile=output13.txt
            [TestCase_14]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data14.txt
            AnswerFile=output14.txt
            [TestCase_15]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data15.txt
            AnswerFile=output15.txt
            [TestCase_16]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data16.txt
            AnswerFile=output16.txt
            [TestCase_17]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data17.txt
            AnswerFile=output17.txt
            [TestCase_18]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data18.txt
            AnswerFile=output18.txt
            [TestCase_19]
            TimeLimit=1000
            MemoryLimit=65535
            StdInputFile=data19.txt
            AnswerFile=output19.txt

            這是運行的效果,運行后結果將保存帶JudgeResult.txt中


            posted on 2012-03-02 20:30 bennycen 閱讀(363) 評論(1)  編輯 收藏 引用
            狠狠色婷婷久久一区二区三区| 久久99精品国产麻豆婷婷| 精品国产乱码久久久久久呢| 国产成人精品综合久久久| 人妻久久久一区二区三区| 狠狠精品干练久久久无码中文字幕 | 色婷婷久久综合中文久久蜜桃av| 久久国产亚洲精品无码| 久久精品亚洲男人的天堂| 欧美一区二区三区久久综合| 国产99久久久久久免费看| 亚洲精品乱码久久久久久按摩| 久久精品三级视频| 国产∨亚洲V天堂无码久久久| 亚州日韩精品专区久久久| 女人香蕉久久**毛片精品| 精品伊人久久大线蕉色首页| 久久久久黑人强伦姧人妻| 91超碰碰碰碰久久久久久综合| 中文字幕久久久久人妻| 国产精品中文久久久久久久| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 成人久久综合网| 久久国产AVJUST麻豆| 国产综合免费精品久久久| 99久久免费国产特黄| 久久人爽人人爽人人片AV| 久久亚洲国产精品成人AV秋霞| 日韩中文久久| 午夜视频久久久久一区 | 97精品依人久久久大香线蕉97| A级毛片无码久久精品免费| 久久99精品综合国产首页| 久久综合精品国产二区无码| 久久精品国产99国产精品导航| 香蕉久久永久视频| 超级碰碰碰碰97久久久久| 国产精品美女久久福利网站| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 久久99精品久久久久久动态图| 人妻久久久一区二区三区|