Образовать из двух последовательностей третью по правилу - 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 по определенному правилу.
- Создаются три массива: a, b и c.
- В цикле формируется последовательность 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.
- В цикле выводятся все элементы последовательности c.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д