Из двух матриц создать результирующий упорядоченный массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Даны два одномерных массива, упорядоченные по убыванию, сделать один массив, упорядоченный по возрастанию. Сортировать полученный массив нельзя.

Решение задачи: «Из двух матриц создать результирующий упорядоченный массив»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void printArray(int* a, int size) {
  6.     printf("\n");
  7.     for (int i = 0; i < size; ++i) printf("%4d", a[i]);
  8. }
  9.  
  10. int intComparator(const void* p1, const void* p2) {
  11.     return (*(int*)p2 - *(int*)p1);
  12. }
  13.  
  14. int main() {
  15.     int a[10], b[10], c[20];
  16.     srand(time(NULL));
  17.  
  18.     for (int i = 0; i < 10; ++i) {
  19.         a[i] = rand() % 20;
  20.         b[i] = rand() % 20;
  21.     }
  22.  
  23.     qsort((void*)a, 10, sizeof(int), intComparator);
  24.     qsort((void*)b, 10, sizeof(int), intComparator);
  25.  
  26.     printArray(a, 10);
  27.     printArray(b, 10);
  28.  
  29.     int i = 9, j = 9, cIndex = 0;
  30.     for (; i >= 0 || j >= 0; --i) {
  31.         for (; j >= 0 && (i < 0 || b[j] < a[i]); --j)
  32.             c[cIndex++] = b[j];
  33.         if(i >= 0)
  34.             c[cIndex++] = a[i];
  35.     }
  36.  
  37.     printArray(c, 20);
  38.     getchar();
  39.  
  40.     return 0;
  41. }

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы: stdio.h, stdlib.h и time.h
  2. Определяется функция printArray, которая выводит элементы массива в формате 4-х разрядного целого числа, сдвинутого влево на 4 позиции
  3. Определяется функция intComparator, которая сравнивает два указателя на целые числа в пересортированном массиве
  4. В функции main создаются массивы a и b, заполняются случайными числами от 0 до 19
  5. Массивы a и b сортируются по возрастанию с помощью функции qsort и функции сравнения intComparator
  6. Выводятся отсортированные массивы a и b
  7. Инициализируются индексы i и j, которые будут использоваться в цикле
  8. В цикле, пока i и j не станут отрицательными, происходит заполнение массива c элементами из массива b, а затем, если i больше или равно нулю, добавляется элемент из массива a
  9. Выводится массив c
  10. В функции main добавляется вызов функции getchar, чтобы программа не закрылась сразу после вывода массива c
  11. Возвращается 0, что означает успешное выполнение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы