Нужно дополнить код: написать программу, сортирующая массив из случайных char элементов n-ленточным слиянием + методом подсчёта,(делим наш большой массив на корень из его N ключевых элементов(char), проводим операцию метода подсчёта над ключевыми char) за этим char элементом как бы "хвостом" следуют int[] и char, они тоже случайные. Затем эти маленькие отсортированные ленты нужно соединить и получить отсортированный массив. (пример моей программы на всякий случай, оставлю прикрепленным)
Пользователь вводит лишь число строк, все остальные элементы заполняются сами random'ом
Например:
Input:
3
Output:
c 21 43 54 g
g 43 65 7 h
j 4 65 4 k
Пока что это выглядит так:
#include
#include
#include
#include
#include
struct S { int number; char stroka[20]; };
void sort(S str[4][20+1], int index)
{
S resul[20];
int i, j, k;
//сортировка методом подсчета
for (j = 0; j < 20; j++)
{
k = 0;
for (i = 0; i < 20; i++)
{
if (str[index][j].number < str[index][i].number) { k++; }
}
resul[k] = str[index][j];
}
str[index][20].number = -1;
for (k = 0; k < 20; k++)
{
str[index][k] = resul[k];
printf("%4d -- %s\n", str[index][k].number, str[index][k].stroka);
}
}
int main(void)
{
setlocale(LC_ALL, "Russian");
S str[4][20+1], result[80];
int i, j;
printf(" ----------------Первоначальные данные----------------\n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 20; j++)
{
str[i][j].number = rand() % 10000;
sprintf_s(str[i][j].stroka, "%s%s", "a", " b");
printf("%4d -- %s\n", str[i][j].number, str[i][j].stroka);
}
}
printf("\n\n");
printf(" ----------------Отсортированные ленты----------------\n");
for (i = 0; i < 4; i++) {
sort(str, i);
printf("\n");
}
printf(" ----------------Конечные данные----------------\n");
int stroka1[4] = { 0,0,0,0 }, t = 0;
while (t < 80)
{
int max = 0;
for (i = 0; i < 4; i++)
{
if (str[i][stroka1[i]].number > str[max][stroka1[max]].number) { max = i; }
}
result[t] = str[max][stroka1[max]];
stroka1[max]++;
printf("\n%4d -- %s", result[t].number, result[t].stroka);
t++;
}
return 0;
}
Гарантия на работу | 1 год |
Средний балл | 4.96 |
Стоимость | Назначаете сами |
Эксперт | Выбираете сами |
Уникальность работы | от 70% |