对拍:
对拍就是用来判断自己的测试数据与正确数据是否一致的方法
组成:
1、随机数生成器+随机数生成器生成的数据
2、测试程序
3、正确程序
4、对拍程序
注意:以上四个.cpp文件要放在同一个文件夹里面
使用:
1、数据生成器生成随机数据,存在一份date.txt文件中,作为测试程序和正确程序的输入数据;
2、测试程序和正确程序以date.txt中的数据作为输入,输出数据对于存储在test.txt和right.txt文件中;
3、对拍程序比对test和right两份数据,判断是否正确
代码实现;
1、随机数生成器
#include<cstdio> #include<ctime> #include<cstdlib>//这两个头文件不可少 int main() { srand(time(NULL));//随机数种 printf("%d %d ",rand()%100+1,rand()%100+1); } //如要产生[m,n]范围内的随机数num,可用: //int num=rand()%(n-m+1)+m; // rand()就是生成一个随机数(由于前面的一句是以time为标准,所以rand()会根据时间生成一个正整数, // 自然不会一样),但是它有可能会很大,所以我们通常在后面mod一个数 // #include<cstdio> // #include<ctime> // #include<cstdlib>//这两个头文件不可少 // int main() // { // int t=200; // srand(time(NULL));//程序开头写上这一句 // while(t--) // { // printf("%d %d ",rand()%100+1,rand()%1000000+0); // } // }
2、对拍
#include<iostream> #include<cstdio> #include<windows.h> using namespace std; int main() { int t=10;//t是有几组数据,对拍次数 while(--t) { system("date.exe > in.txt");//date是数据生成器,in.txt是生成的数据 system("test.exe < in.txt > test.txt");//test.txt是测试数据 system("right.exe < in.txt > right.txt");//right.txt是正确的数据 if(system("fc test.txt right.txt"))//比对 break; } if(t==0) cout<<"right"<<endl; else { cout<<"error"<<endl; getchar(); } return 0; }