1 #include <cstdio>
2 #include <fstream>
3 #include <iostream>
4
5 #include <cstdlib>
6 #include <cmath>
7 #include <cstring>
8 #include <algorithm>
9
10 typedef long long int ll;
11 typedef double db;
12
13 #define DBG printf("*")
14
15 using namespace std;
16
17 int opt,ods;
18 char c[10000000]; //accept less than 9.5M file
19 char s[10000000];
20 int ap,sp;
21
22 int main()
23 {
24 //printf("output situation?\n");
25 //scanf("%d",&opt);
26 opt=1;
27 if(opt)
28 {
29 printf("output details?\n");
30 scanf("%d",&ods);
31 }
32
33 int T;
34 printf("times tested:\n");
35 scanf("%d",&T);
36
37 int tot=0;
38
39 bool checked=true;
40 int kc,ks;
41 int tg=0,tx=0,ty=0; int dt=0;
42
43 do
44 {
45 int T=clock();
46 if(system("G.exe")){ printf("genurator broke! exit."); return 0; }
47 dt=clock()-T;
48 if(opt) printf("gen run out. time use:%dms.\n",dt);
49 tg+=dt;
50
51
52 //read program a
53 T=clock();
54 if(system("x.exe")){ printf("x broke! exit."); return 0; }
55 dt=clock()-T;
56 if(opt) printf("x run out. time use:%dms.\n",dt);
57 tx+=dt;
58
59 freopen("out.txt","r",stdin);
60 ap=0;
61 while(!feof(stdin)) c[ap++]=getchar();
62 fclose(stdin);
63
64 //read program b
65 T=clock();
66 if(system("y.exe")){ printf("y broke! exit."); return 0; }
67 dt=clock()-T;
68 if(opt) printf("y run out. time use:%dms.\n",dt);
69 ty+=dt;
70
71 freopen("out.txt","r",stdin);
72 sp=0;
73 while(!feof(stdin)) s[sp++]=getchar();
74 fclose(stdin);
75
76
77 //compare
78 if(opt) printf("start compare...\n");
79
80 if(ods)
81 {
82 for(int i=0;i<min(10,ap);i++) cout<<c[i]; cout<<endl;
83 for(int i=0;i<min(10,sp);i++) cout<<s[i]; cout<<endl;
84 }
85
86 kc=0,ks=0;
87
88 int it=0;
89 while(kc!=ap || ks!=sp)
90 {
91 //ignore space and enter
92 while(kc<ap && c[kc]==' ' || c[kc]=='\n' || s[ks]=='\r')
93 kc++;
94 while(ks<sp && s[ks]==' ' || s[ks]=='\n' || s[ks]=='\r')
95 ks++;
96
97 //if(it<5) { printf("%d %d\n",c[kc],s[ks]); }
98
99 //compare
100 if(c[kc]!=s[ks]){ checked=false; break; }
101 kc++; ks++;
102 it++;
103 }
104
105 if(opt) printf("check out!\n");
106
107 tot++;
108
109 if(!opt) { if(tot%10==0) printf("%d\n",tot); }
110 else printf("==%d==\n",tot);
111 }
112 while(checked == true && tot<T);
113
114 if(checked==false)
115 {
116 printf("checked failed.\nat the %d case.\nat charactor %d and %d.\ndatafile is in the folder.\n",tot,kc,ks);
117 }else
118 {
119 printf("check complete,no any wrong thing detacted.\nfor %d cases.\n",tot);
120 printf("generator used time:%.4fs (avg:%.4fms)\n",(db)tg/1000,(db)tg/tot);
121 printf("program x used time:%.4fs (avg:%.4fms)\n",(db)tx/1000,(db)tx/tot);
122 printf("program y used time:%.4fs (avg:%.4fms)\n",(db)ty/1000,(db)ty/tot);
123 printf("amount to:%.4fs (avg:%.4fms)\n",(db)clock()/1000,(db)clock()/tot);
124 }
125
126 system("PAUSE");
127
128 return 0;
129 }