在C中对多维数组列进行排序
我有一些C语言的代码:在C中对多维数组列进行排序,c,arrays,sorting,multiple-columns,C,Arrays,Sorting,Multiple Columns,我有一些C语言的代码: #include <stdio.h> #include <stdlib.h> int multiply(int); int main() { FILE *fp; int i, j, n, m, matrix[99][99], sum = 0, columnSums[99] = {0}; fp = fopen("data.txt", "r"); if(fp != N
#include <stdio.h>
#include <stdlib.h>
int multiply(int);
int main() {
FILE *fp;
int i, j, n, m,
matrix[99][99],
sum = 0,
columnSums[99] = {0};
fp = fopen("data.txt", "r");
if(fp != NULL) {
fscanf(fp, "%d", &n);
fscanf(fp, "%d", &m);
for(i = 0; i < n; i++) {
for(j = 0; j < m; j++) {
fscanf(fp, "%d", &matrix[i][j]);
}
}
for(i = 0; i < m; i++) {
for(j = 0; j < n; j++) {
sum += multiply(matrix[j][i]);
}
columnSums[i] = sum;
sum = 0;
}
} else {
puts("Cannot read the file!");
}
puts("");
system("pause");
return 0;
}
int multiply(int thisNum) {
return thisNum * thisNum *thisNum;
}
#包括
#包括
整数乘(int);
int main(){
文件*fp;
inti,j,n,m,
矩阵[99][99],
总和=0,
列和[99]={0};
fp=fopen(“data.txt”,“r”);
如果(fp!=NULL){
fscanf(fp、%d、&n);
fscanf(fp、%d、&m);
对于(i=0;i
我的任务要求我从文本文件中读取多维数组,然后通过将每个列成员相加并将其自身乘以三次对每个列进行排序。
读取一个数组并找到每个列的加法并将其存储到另一个存储每个列的加法的数组中并不困难(希望这会有所帮助),但我一直在整理它。有什么建议吗?:) 您可以使用stdlib.h中声明的qsort函数您可以使用qsort()。别忘了包括stdlib.h
#define ARR_SIZE(a) (sizeof(a) / sizeof(*(a)))
int comp(const void* a, const void* b)
{
return *(const int*)a - *(const int*)b;
}
...
for (i = 0; i < ARR_SIZE(matrix); i++)
{
qsort(matrix[i], ARR_SIZE(matrix[i]), sizeof matrix[i][0], comp);
}
#定义ARR#u大小(a)(sizeof(a)/sizeof(*(a)))
内部组件(常数无效*a,常数无效*b)
{
返回*(常数整数*)a-*(常数整数*)b;
}
...
对于(i=0;i
在
中声明。它可能是在libc中定义的。所以
。关于如何在我的任务中使用它,可能有什么建议吗?@iNfas你知道如何在一维数组中使用qsort()
。将其扩展到固定宽度的二维数组相当简单。@H2CO3:对。。。更正。@WhozCraig是的,我的程序刚刚运行;)