Образовать из двух последовательностей третью по правилу - C (СИ)

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

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

Даны две последовательности ах < а2 < ... < а„ и Ьх < Ь2 < ... < bm. Образовать из них новую последовательность чисел так, чтобы она тоже была неубывающей. Примечание. Дополнительный мас* сив не использовать.

Решение задачи: «Образовать из двух последовательностей третью по правилу»

textual
Листинг программы
#include <stdio.h>
 
#define ASIZE(x) sizeof(x)/sizeof(x[0])
 
int main()
{
   int a[5] = { 0, 2, 4, 6, 8 };
   int b[7] = { -2, 1, 3, 5, 7, 9, 15 };
   int c[ASIZE(a) + ASIZE(b)] = { 0 };
   
   unsigned i = 0, j = 0, k = 0;
   for (i = 0; i < ASIZE(c); ++i)
      c[i] = ((k >= ASIZE(b)) || (j < ASIZE(a) && a[j] < b[k])) ? a[j++] : b[k++];
   
   for (i = 0; i < ASIZE(c); ++i)
      printf("%d ", c[i]);
 
   printf("\n");
   return 0;
}

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

Вывод программы: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 В данном коде две исходные последовательности a и b преобразуются в одну последовательность c по определенному правилу.

  1. Создаются три массива: a, b и c.
  2. В цикле формируется последовательность c. В каждой итерации цикла в c записывается элемент из a или b в зависимости от условия. Условие проверяется на каждой итерации цикла. Если k < ASIZE(b) и a[j] < b[k], то в c записывается элемент a[j]. Если k >= ASIZE(b) или a[j] >= b[k], то в c записывается элемент b[k]. После записи элемента в c, значение j и k увеличивается на 1.
  3. В цикле выводятся все элементы последовательности c.
  4. Программа завершается.

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


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

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

12   голосов , оценка 3.75 из 5
Похожие ответы