【发布时间】:2021-03-18 13:10:31
【问题描述】:
我正在编写一个 C 程序,它应该打印 n 个集合的笛卡尔积,其中每个集合的元素是一个文件中的文本行,以及 n 文件作为命令行参数传递。到目前为止,我设法将每一行读入字符串矩阵。但是,我不知道如何编写打印产品的算法。
这是我目前所拥有的:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LSIZ 128
#define RSIZ 10
int main(int argc, char *argv[])
{
char input[LSIZ];
int n = argc;
char *sets[argc - 1][RSIZ];
int i = 0;
int j = 0;
int y = 1;
FILE *file = NULL;
if (argc == 1)
{
printf("nofiles");
}
else
{
while (--argc > 0)
{
if ((file = fopen(argv[y], "r")) == NULL)
{
printf("cat: failed to open %s\n", *argv);
return 1;
}
else
{
for (j = 0; j < RSIZ && fgets(input, sizeof(input), file); ++j)
{
int lineLen = strlen(input) + 1;
sets[i][j] = strncpy(malloc(lineLen), input, lineLen);
}
fclose(file);
j = 0;
}
i++;
y++;
}
}
return 0;
}
【问题讨论】:
-
这能回答你的问题吗? Efficient Cartesian Product algorithm
-
很遗憾没有,我已经搜索过了,但没有找到任何有关问题的信息。
-
编辑您正在使用的输入文件的帖子示例内容。
-
您可以像我的回答here 那样实现“里程表”。 (对不起插头。)
-
(很抱歉,建议的副本如何很好地回答如何为 n 个项目实现笛卡尔集?)