IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    JDFZOJ的SPJ模板

    wyfcyx发表于 2015-08-19 09:21:46
    love 0
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #define OJ_AC 0
    #define OJ_WA 1
    bool dcmp(double x, double y)
    {
    	return fabs(x-y) <= fabs(y*0.05);
    }
    char *daStr;
    void diff(double R, double Wa)
    {
    	FILE *out = fopen("diff.out", "a+");//错误详情文件,a+是append追加方式
    	fprintf(out, "====================%s\n", daStr);
    	fprintf(out, "Right : %lf\n", R);
    	fprintf(out, "--------------------\n");
    	fprintf(out, "Your : %lf\n", Wa);
    	fprintf(out, "====================\n");
    	fclose(out);
    }
    int main(int argc, char* argv[]){
    	FILE *fo, *fu, *fi;
    	double a, b;
    	daStr = strrchr(argv[1], '/');//测试点文件名
    	fi = fopen(argv[1], "r");//测试点输入文件 in
    	fo = fopen(argv[2], "r");//测试点输出文件 out
    	fu = fopen(argv[3], "r");//用户答案文件 user
    	int N, S1, S2;
    	fscanf(fi, "%d", &N);
    	fclose(fi);
    	for(int i=0; i<N; ++i)
    	{
    		S1 = fscanf(fo, "%lf", &a);
    		S2 = fscanf(fu, "%lf", &b);
    		if(S1 != 1 || S2 != 1 || !dcmp(b, a))
    		{
    			diff(a, b);//显示可查看的错误信息
    			fclose(fo);
    			fclose(fu);
    			return OJ_WA;
    		}
    	}
    	fclose(fo);
    	fclose(fu);
    	return OJ_AC;
    }
    


沪ICP备19023445号-2号
友情链接