Cena评测系统,最受欢迎的信息学竞赛离线评测系统。

它是开放源程序的信息学竞赛评测系统,能满足大多数程序设计竞赛的测评需求。

特色功能:

通过局域网自动收取选手程序。
高效率的数据文件配置工具。
自动选用对应的编译器来编译选手程序,也能使用解释器或直接评测可执行文件。
能准确测出选手程序的运行时间和内存使用量,并可加入对运行时间和内存使用的限制。
自动比较选手程序的输出和标准输出的差异,并能将两者出现差异的具体位置告诉评测者。
支持使用自定义校验器,可评测有多解的试题。
可对评测结果进行统计分析。
可将评测结果以各种样式打印或导出。

注意事项:

Cena 0.8.1 安装程序: cena-0.8.1-20110710-setup.exe[1]  。如果它崩溃,就用这个补丁 cena-0.8.2-patch.zip 里的文件覆盖到安装目录。2011-08-21 发布0.8.2版本。但愿它不再崩溃。(截止2013年8月1日最新版)

自定义校验器(Special Judge)编辑
Cena评测软件提供了使用自定义校验器进行评分的功能。可以使用C++或者Pascal进行编写评测插件,其中Pascal需要载入软件所提供的运行库。cena的用处还是很大的,以下是一个关于自定义校验器的模板,使用时需要放在data文件夹下,要有exe文件

cena的SJ主要是由pascal语言编写的,其原因是cena附的用于SJ的库函数是给pascal使用的。
那个库文件位于cena安装文件夹/lib/libcheck.pas。
使用时把写好的SJ程序和libcheck.pas放到同一目录下,然后编译出exe。
在cena的试题配置选项卡当中,"比较方式"选"使用自定义校验器",然后下面"自定义校验器"一栏选择刚刚编译出来的exe就好了。
想用C++编写SJ的朋友,我也百度到了一个不错的模板。已经试用过了。下面会一起给出一个sample。当然C++代码的编译就和libcheck.pas没关系了,确实省事一些。

{cena的帮助文件中对于libcheck.pas的说明}
{注意其中 fso : double 有误,这一变量名应为fsco}
libcheck.pas(位置:安装路径\lib\) 说明如下:
变量:
std: Text; { 用于读取标准输出文件 }
rep: Text; { 用于写入校验信息 }
fso: Double; { 为这个测试点的满分 }
过程:
procedure Score(AScore: Double); { 用于向评测系统报告得分 }
procedure Finish; { 结束 }
{这个是CEOI 2011 Day1 T1 balloons的SPJ的代码}
{读入n并判断选手输出的n个浮点数是否在允许的误差范围内}
useslibcheck;
varn,i: longint;x,y: extended;bin,bout: text;
procedure ends(x:double); {返回得分为x并结束程序}beginscore(x);writeln(rep,n,' lines checked');writeln(rep,'SJ by wyl8899');Finish;halt;end;beginassign(bin,'balloons.in'); reset(bin);readln(bin,n); close(bin);assign(bout,'balloons.out'); reset(bout);for i:=1 to n dobeginreadln(std,y);if seekeof(bout) thenbeginwriteln(rep,'Output Too Short');ends(0);end;readln(bout,x);if (x-y>0.001001)or(y-x>0.001001) thenbeginwriteln(rep,'Line ',i);writeln(rep,'Std:',y:0:3);writeln(rep,'W A:',x:0:3);ends(0);end;end;if not seekeof(bout) thenbeginwriteln(rep,'Output Too Long');ends(0);end;ends(fsco);end.
//CEOI 2011 Day1 T1 balloons的SPJ的代码 ( C++ 模板 )
#include<cstdio>
#include<cstdlib>
FILE *fscore,*freport,*fstd,*fin,*fout;
bool Judge()
{double x,y,dif;fscanf(fstd,"%lf",&x);fscanf(fout,"%lf",&y);dif=(x>y)?(x-y):(y-x);fprintf(freport,"Std:%.10lf\nYour Ans:%.10lf\nDiffer:%.10lf\n",x,y,dif);return dif<=0.000001;
}
int main(int argc,char *argv[])
{fscore=fopen("score.log","w");    //打开得分文件freport=fopen("report.log","w");//打开报告文件fstd=fopen(argv[2],"r");        //打开测试点标准输出文件int score=atoi(argv[1]);      //取得测试点的分数fin=fopen("elephant.in","r");    //打开测试点标准输入文件fout=fopen("elephant.out","r"); //打开用户的数据输出文件if (!fout){fprintf(fscore,"%d",0);     //返回0分fprintf(freport,"no output");//报告Judge结果为no output}else if (Judge())  //Judge后结果为真{fprintf(fscore,"%d",score);//返回满分fprintf(freport,"right");  //报告Judge结果为right}else{fprintf(fscore,"%d",0);  //返回0分fprintf(freport,"wrong");//报告Judge结果为wrong}fclose(fscore);//关闭得分文件fclose(freport);//关闭报告文件return 0;
}

实例演示:

1299. bplusa
☆   输入文件:bplusa.in   输出文件:bplusa.out   评测插件

【题目描述】
输入一个整n,将其拆为两个非负整数a,b,使a,b的和等于n。
【输入格式】
输入数据只有一行,为一个整数。
【输出格式】
输出数据只有一行,两个整数,中间用一个空格隔开。
【样例输入】
5
【样例输出】
2 3
选手代码:

#include<stdio.h>int main()
{freopen("bplusa.in","r",stdin);freopen("bplusa.ans","w",stdout);int n;scanf("%d",&n);printf("1 %d",n-1);return 0;
}

Special Judge 代码(评测插件)

#include<cstdio>
#include<cstdlib>
FILE *fscore,*freport,*fstd,*fin,*fout;
bool Judge()
{int n,x,y,dif;fscanf(fin,"%d",&n);fscanf(fout,"%d%d",&x,&y);dif=n==(x+y)?1:0;fprintf(freport,"Std:%d + :%d == n:%d\n",x,y,dif);return dif;
}
int main(int argc,char *argv[])
{fscore=fopen("score.log","w");    //打开得分文件freport=fopen("report.log","w");//打开报告文件fstd=fopen(argv[2],"r");        //打开测试点标准输出文件int score=atoi(argv[1]);      //取得测试点的分数fin=fopen("bplusa.in","r");      //打开测试点标准输入文件fout=fopen("bplusa.ans","r"); //打开用户的数据输出文件if (!fout){fprintf(fscore,"%d",0);       //返回0分fprintf(freport,"no output");//报告Judge结果为no output}else if (Judge())    //Judge后结果为真{fprintf(fscore,"%d",score);  //返回满分fprintf(freport,"right");   //报告Judge结果为right}else{fprintf(fscore,"%d",0);//返回0分fprintf(freport,"wrong");//报告Judge结果为wrong}fclose(fscore);      //关闭得分文件fclose(freport);    //关闭报告文件return 0;
}

CENA代码评测软件系列之一:简介

cena评测系统:自定义校验器(自定义评测插件编写)相关推荐

  1. cena评测系统:自定义校验器(浮点误差)

    作为一个搞oi的,cena的用处还是很大的,以下是一个关于自定义校验器的模板,使用时需要放在data文件夹下,要有exe文件. 代码方面感谢wyl8899   ORZ. #include<cst ...

  2. python参数检验框架_python-wtforms框架如何自定义校验器的原理和方法总结

    细节请看注释,核心就是__call__函数的用法(def __call__(self,form, field)参数由继承的Form自动提供) from wtforms import Form, Str ...

  3. spring-java使用Validation参数验证-自定义校验器

    在开发JAVA服务器端代码时,我们会遇到对外部传来的参数合法性进行验证,而hibernate-validator提供了一些常用的参数校验注解,我们可以拿来使用. spring-boot-web,内嵌了 ...

  4. Bean Validation完结篇:你必须关注的边边角角(约束级联、自定义约束、自定义校验器、国际化失败消息...)【享学Spring】

    每篇一句 没有任何技术方案会是一种银弹,任何东西都是有利弊的 前言 一般来说,对于web项目我们都有必要对请求参数进行校验,有的前端使用JavaScript校验,但是为了安全起见后端的校验都是必须的. ...

  5. acm在线评测系统 c 语言,ACM在线评测系统.pdf

    ACM在线评测系统 ACM Online Judge System 专 业:计算机科学与技术 班 级:软件071 学 号:200780114101 学生姓名:耿迎迎 指导教师:郭永锋 2011 年6 ...

  6. wireshark协议解析器原理与插件编写

    工作原理 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议. 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节(如:时间戳), 将数据交给一个 ...

  7. hibernate自定义校验器使用(字段在in范围之内)

    2019独角兽企业重金招聘Python工程师标准>>> 1.自定义注解类DigitsMustIn @Constraint(validatedBy = DigitsMustInVali ...

  8. 信息学奥赛一本通c++版在线评测系统_Redmi K30S至尊纪念版评测:2299元还有谁

    一.前言和图赏 自去年Redmi推出K30之后,这个系列开始频繁推出新机型,迄今为止至少有5款机型在售,比产品线更新的还要快. 这是为何?一切都要从卢伟冰接手Redmi说起,扛起了小米性价比大旗,而小 ...

  9. 全网唯一正确身份证和社统一社会信用代码自定义表单校验器(身份证校验和社统一社会信用代码校验)

    话不多说,直入正题: 1.工具类: import * as moment from 'moment'; import {isUndefined} from 'util'; import {Abstra ...

最新文章

  1. Linux 常用命令标记
  2. [讨论] 线程池 vs 专有线程
  3. PHP经验总结 - 开发技巧分享
  4. 心得14--jsp遍历所有数据标签与转义标签
  5. java extern的作用_学习笔记之20-static和extern关键字2-对变量的作用
  6. AR.js专题-多Renderer支持
  7. 微软提出Layout,多模态任务也有预训练模型啦
  8. 全球IPv4地址正式耗尽!
  9. [JAVA毕业设计]Web企业差旅在线管理系统源码获取和系统演示
  10. 数论入门符号_大符号入门指南第2部分
  11. ThingJS如何收费的?
  12. 感谢周易算命大师元真先生
  13. 学校人脸识别门禁功能介绍
  14. 2019年电赛D题简易电路特性测试仪试题ad5933测量小阻抗值
  15. ubuntu下破解rar文件的密码
  16. 19年恶意软件排行榜
  17. cadence软件选择网络功能
  18. 华为服务器修改root密码,云服务器更改root权限设置密码
  19. Solr单机版安装【实战】
  20. 依赖注入框架-dragger2

热门文章

  1. 大学生c语言程序设计具体干什么,大学生c语言程序设计实习报告.doc
  2. 通达OA软件测试工资,通达OA Office Anywhere 2015版网络智能办公系统一处盲注漏洞/demo测试(需登录)...
  3. 第三章 路径和画笔工具的应用[云图智联]
  4. 基于JAVA自考学位系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  5. 计算机cad考试试题及答案,2017职称计算机CAD练习试题及答案
  6. 安卓 TextView 七宗罪
  7. C51---9 LED点阵屏
  8. git-svn使用教程
  9. solidworks 3D模型文件导出到tanner ledit版图软件中
  10. U盘修复的大致思路和过程