我希望得到一点帮助,我正在实现一个反转计数器算法,以接受50,000个整数,并显示反转和运行算法所需的时间,我有一个困难的时间分配和保存整数从文件到一个数组。我的代码符合和运行,但没有发生任何事情,这里是我有:
int main(int argc, char** argv)
{
int n, i;
int inversions=0;
int *A;
FILE *file;
char filename[100];
clock_t start, end;
double totalTime;
printf("Enter filename: ");
scanf("%s", filename);
file = fopen(filename, "r");
if(file == NULL)
{
printf("Error opening file!\n");
return 0;
}
fscanf(file, "%d", &n);
A = (int*) malloc(n * sizeof(int));
for(i = 0; i < n; i++) {
fscanf(file, "%d", &A[i]);
}
start = clock();
inversions = countInversionsBruteForce(A, n);
end = clock();
totalTime = (double) (end - start) / CLOCKS_PER_SEC;
printf("Brute Force Algorithm\n");
printf("Number of inversions: %d\n", inversions);
printf("Execution time: %f\n", totalTime);
我想我没有分配数组大小,也没有正确保存它
1条答案
按热度按时间sr4lhrrt1#
您的程序不完整,所以我无法编译它。将问题最小化为仅将数据加载到数组中:
1.格式化代码以提高可读性。
1.已生成合适的输入文件。很可能是您的问题,但您尚未与我们共享您的输入示例。
1.添加了缺少的包含文件。
1.删除
argc
、argv
,因为您不使用它们。1.最小化变量的作用域。对于无符号值,使用
size_t
而不是int
。1.获取文件名时的最大字符串大小
1.检查
scanf()
、fopen()
和fscanf()
的返回值。1.打印出读取的数据以证明其工作正常。
其中1.txt为:
示例会话如下所示: