这次noip看到旁边用c++那位对拍得好爽,
自己也搜了一下对拍的方法,
可惜多不适合pascal党,
所以我中和几种方法,终于弄出了一个用 命令提示符对拍的方法。
首先要有一个 百分百对的程序
我写了个排序
a.pas
var
procedure init;
var
begin
end;
procedure main;
var
begin
end;
procedure print;
var
begin
end;
begin
end.
还要有一个待检验的程序,快拍(经检验是正确的,呵呵)
b.pas
var
procedure init;
var
begin
end;
procedure qsort(x,y:longint);
var
begin
end;
procedure print;
var
begin
end;
begin
end.
还要有一个 数据生成器
maker.pas
var
begin
end.
最核心的部分就是这里
新建一个文本文档,后缀名改为“.bat”
在里面打
:loop
maker.exe
a.exe
b.exe
fc o1.txt o2.txt
if errorlevel 1 goto end
goto loop
:end
dos语言:loop//循环
maker.exe//运行 数据生成器
a.exe//运行 正确程序
b.exe//运行 待检测程序
fc o1.txt o2.txt//比较 两个程序的输出结果
if errorlevel 1 goto end//如果 有错误(两个输出文件不一样) 就跳到end
goto loop//跳到loop
:end
或者还可以这样写
:loop
maker.exe>in.txt
a.exeo1.txt
b.exeo2.txt
fc o1.txt o2.txt
if errorlevel 1 goto end
goto loop
:end
要是这样写,a
:loop
maker.exe>in.txt//运行 数据生成器 把结果输出到 in.txt
a.exeo1.txt//运行 正确程序 读入为 in.txt 输出为 o1.txt
b.exeo2.txt//运行 待检测程序 读入为 in.txt 输出为 o2.txt
fc o1.txt o2.txt
if errorlevel 1 goto end
goto loop
:end
注意:
1.程序检测的是执行程序,而不是源程序。所以每改一次源程序都要编译一次。
2.dos中貌似不识别 .in .out 文件,所以要用 .txt