对拍

对拍:

对拍就是用来判断自己的测试数据与正确数据是否一致的方法

组成:

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;
}  

3、测试程序和正确程序自己准备

原文地址:https://www.cnblogs.com/-citywall123/p/10981611.html