数据生成器模板
0AND1STORY
2020-01-17 15:01:22
```cpp
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <climits>
#include <windows.h>
using namespace std;
#define infile(name) fopen(name, "w");
#define outfile(name) fopen(name, "r");
#define For(x, l, r) for(int x = l; x <= r; x ++)
#define DATA_NUM 20
#define PROGRAM_NAME "book"
#define SHOW_CONTENT FALSE
typedef FILE* LPFILE;
inline int rand(register int l, register int r) {
return rand() % (r-l+1) + l;
}
inline double rand_double() {
return (double)rand() / RAND_MAX;
}
inline long long rand_long() {
return (long long)rand() * RAND_MAX * RAND_MAX + (long long)rand() * RAND_MAX + (long long)rand();
}
inline long long rand_long(register long long l, register long long r) {
return rand_long() % (r-l+1) + l;
}
int main()
{
srand(time(NULL));
printf("Begin Make Data of \""PROGRAM_NAME"\":\n");
printf("=============================\n");
system("mkdir "PROGRAM_NAME);
for (int data_num = 0; data_num < DATA_NUM; data_num ++)
{
char* file_name = new char[MAX_PATH];
sprintf(file_name, PROGRAM_NAME"/"PROGRAM_NAME"%d.in", data_num);
LPFILE fin = infile(file_name);
delete[] file_name;
/* Begin Make Data */
int R = 10000, C = 10000, N;
while (R * C > 50) {
R = rand_long(1, 10);
C = rand_long(1, 10);
}
N = rand_long(R * C, 50);
fprintf(fin, "%d %d %d\n", N, R, C);
for (int i = 1; i <= N; i ++) {
fprintf(fin, "%d\n", (int)rand_long(1, 100));
}
/* End Make Data */
fclose(fin);
printf("Data [%d]:\n", data_num);
char* cmd_line = new char[MAX_PATH];
sprintf(cmd_line, PROGRAM_NAME".exe < \""PROGRAM_NAME"/"PROGRAM_NAME"%d.in\" > \""PROGRAM_NAME"/"PROGRAM_NAME"%d.out\"", data_num, data_num);
clock_t t = clock();
system(cmd_line);
printf("Time: %d ms\n", clock()-t);
#if SHOW_CONTENT
printf("Input File [%d]:\n", data_num);
sprintf(cmd_line, "type \""PROGRAM_NAME"%d.in\"", data_num);
system(cmd_line);
printf("Output File [%d]:\n", data_num);
sprintf(cmd_line, "type \""PROGRAM_NAME"%d.out\"", data_num);
system(cmd_line);
#endif // SHOW_CONTENT`
delete[] cmd_line;
printf("=============================\n");
}
printf("Make Data Successfully.\n");
return 0;
}
```