C/C++

Помогите с массивами на С

Даны три целочисленных массива A, B и C размера NA, NB, NC соответственно, элементы которых упорядочены по убыванию. Объединить эти массивы так, чтобы результирующий целочисленный массив D (размера NA + NB+NC) остался упорядоченным по убыванию.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
int descending(const void* va, const void* vb) {
int sa = *((int*)va);
int sb = *((int*)vb);
if (sa > sb) return -1;
if (sa < sb) return 1;
return 0;
}
size_t length(const char* msg) {
size_t value;
printf(msg);
scanf_s("%u", &value);
while (getchar() != '\n');
return value;
}
int main(void) {
size_t na = length("NA: ");
int* a = (int*)malloc(na * sizeof(int));
size_t nb = length("NB: ");
int* b = (int*)malloc(nb * sizeof(int));
size_t nc = length("NC: ");
int* c = (int*)malloc(nc * sizeof(int));
size_t nd = na + nb + nc;
int* d = (int*)malloc(nd * sizeof(int));
int mn = 10;
int mx = 100;
size_t i, j;
printf("ND: %u\n", nd);
srand((unsigned)time(NULL));
for (i = 0; i < na; ++i) a[i] = RAND(mn, mx);
qsort(a, na, sizeof(int), descending);
printf("A: ");
for (i = 0; i < na; ++i) printf("%3i", a[i]);
puts("");
for (i = 0; i < nb; ++i) b[i] = RAND(mn, mx);
qsort(b, nb, sizeof(int), descending);
printf("B: ");
for (i = 0; i < nb; ++i) printf("%3i", b[i]);
puts("");
for (i = 0; i < nc; ++i) c[i] = RAND(mn, mx);
qsort(c, nc, sizeof(int), descending);
printf("C: ");
for (i = 0; i < nc; ++i) printf("%3i", c[i]);
puts("");
for (i = 0, j = 0; i < na; ++i, ++j) d[i] = a[j];
for (j = 0; i < na + nb; ++i, ++j) d[i] = b[j];
for (j = 0; i < nd; ++i, ++j) d[i] = c[j];
qsort(d, nd, sizeof(int), descending);
printf("D: ");
for (i = 0; i < nd; ++i) printf("%3i", d[i]);
puts("");
free(a);
free(b);
free(c);
free(d);
system("pause > nul");
return 0;
}
Аексей Званский
Аексей Званский
79 314
Лучший ответ
Дмитрий Богданов Я худею, мне это читать даже лень, а вы это сами написали.
D = merge_array(A,B,C,SORT.DESC);