这就是我想要实现的目标:
假设用户输入为:
生成随机实例......
输入电路板尺寸MAX_X MAX_Y:100 200
输入点数NUM_PT:10
输入要生成的随机实例数:7
您的程序将共生成7个实例,写入7个 单独的文件" instance10_j.txt",对于j = 1,2,3,...每个 实例具有矩形区域[0; 100] X [0; 200],并且有10个 点。点的坐标是随机均匀生成的 在矩形区域内。而你的程序确保没有 每个实例中的重复点。如果你不可能 生成这些文件的程序,打印出错误是什么并退出。 所有这些文件都保存在执行的当前目录中 命令,您的程序打印到屏幕:
instance10_1.txt生成
instance10_2.txt生成
instance10_3.txt生成
instance10_4.txt生成
instance10_5.txt生成
instance10_6.txt生成
instance10_7.txt生成...完成!
这是我到目前为止所做的:
int writetofile(max_X, max_Y, numpt, random_inst);
int main(int argc, char *argv[])
{
FILE *fp;
int max_x, max_y, num_pt, rand_inst;
int *x_coordinate, *y_coordinate;
int inputfile = 0, outputfile = 0;
int i;
if (argc == 1)
{
/* to generate random instances, accepting parameters from stdin */
printf("Generating random instances...");
printf("Enter the circuit board size MAX_X MAX_Y: ");
scanf("%d %d", &max_x, &max_y);
printf("Enter the number of points NUM_PT: ");
scanf("%d", &num_pt);
printf("Enter the number of random instances to be generated: ");
scanf("%d", &rand_inst);
return 1;
}
/* MAIN FUNCTION CONTINUES FOR REMAINING WORK */
}
int writetofile(max_X, max_Y, numpt, random_inst)
{
FILE *fp;
int i;
for (i = 1; i <= random_inst; i++)
{
/* NEED HELP HERE */
fp = fopen(File with name instance[num_pt]_[rand_inst], "w");
fprintf(fp, "#%s\n", argv[inputfile]);
fprintf(fp, "#area [0, MAX_X] x [0, MAX_Y]\n");
fprintf(fp, "%d\t%d\n", max_x, max_y);
fprintf(fp, "#number of points NUM_PT\n");
fprintf(fp, "%d\n", num_pt);
fprintf(fp, "#coordinates\n");
for (i = 0; i < num_pt; i++)
{
fprintf(fp, "%d\t%d\n", x_coordinate[i], y_coordinate[i]);
}
fprintf(fp, "#end of instance\n");
fclose(fp);
我需要创建没有重复的随机实例,但更重要的是我应该将它们写入单独的文件
我的难点在于打开一个名为instance[num_pt]_[random_instances]
的文件,我认为该文件应该包含在for循环中。
我正在使用Ubuntu终端通过ssh访问我的实验室计算机。
语言:c99;编译器:gcc
答案 0 :(得分:0)
就像 Kaylum 一样。
char name[MAX_LEN];
/* Incorporate this into your for loop */
snprintf(name, MAX_LEN, "instance%d_%d.txt", num_pt, random_inst);
fopen(name, "w");