Преобразовать массив, увеличив каждую его серию на один элемент - C (СИ) (71034)
Формулировка задачи:
Дан массив, состоящий из n элементов. Назовем серией группу подряд
идущих одинаковых элементов, а длиной серии — количество этих
элементов (длина серии может быть равна 1). Преобразовать массив,
увеличив каждую его серию на один элемент.
Решение задачи: «Преобразовать массив, увеличив каждую его серию на один элемент»
textual
Листинг программы
#include <stdio.h> int array_seqadd(int a[], int n, int maxsize){ int i, j, l; for(i = 0; i < n; i = j, ++n){ j = i + 1; while((j < n) && (a[j] == a[i])) ++j; if(n >= maxsize) break; for(l = n; l > i; --l) a[l] = a[l - 1]; ++j; } return n; } int main(void){ int a[32] = { 0,0, 1, 2,2, 3,3,3, 4, 5, 7,7 }; int i, n = 12; n = array_seqadd(a, n, sizeof(a)/sizeof(a[0])); for(i = 0; i < n; ++i) printf("%d ", a[i]); return 0; }
Объяснение кода листинга программы
В этом коде:
- Увеличивается каждая серия массива на один элемент.
- Если серия в массиве повторяется, то она пропускается.
- Если размер массива достигает максимального значения, то увеличение серии прекращается.
- В конце выводится получившийся массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д