Я хочу отсортировать двумерный массив целых чисел "d" по первому столбцу в порядке убывания, используя qsort ().Однако я хочу, чтобы каждый элемент первого столбца соответствовал элементу, который был во втором столбце в той же строке в начале.
Например:
Массив в начале:
column1: {4, 5, 1, 3, 0}
column2: {1, 2, 3, 4, 5}
, и результат должен быть:
column1: {5, 4, 3, 1, 0}
column2: {2, 1, 4, 3, 5}
Я написал код для сортировки одномерного массива, ноЯ не могу понять, как это сделать для двумерного.
int main(){
FILE *file_in, *file_out;
file_in=fopen("file.in", "r");
fscanf(file_in, "%d", &N);
for( i = 1; i <= N; i = i + 1 ){
fscanf(file_in, "%d", &a);
fscanf(file_in, "%d", &b);
fscanf(file_in, "%d", &c);
d[i][1] = a+b+c;
d[i][2] = a*b*c
}
fclose(file_in);
int cmpfunc (const void * a, const void * b) {
return ( *(int*)b - *(int*)a );
}
qsort(d, N, sizeof(int), cmpfunc);
file_out=fopen("file.out","w");
fprintf(file_out, "%d", M);
for ( i=1; i<=N; i = i + 1){
fprintf(file_out, "%d", d);
}
fclose(file_out);
return 0;
}
Заранее благодарю за помощь.