/*
Дан целочисленный массив размера N. Серия-это группа подряд идущих
одинаковых элементов, а ее длина-количество этих элементов (длина
серии может быть равна 1). Преобразовать массив, увеличив каждую
его серию на один элемент. НА ЯЗЫКЕ СИ.
*/
#include
#include
#include
#include
int main(){
srand(time(0));
int a = 0, b = 2;
int N;
int *ar;
int counter(1),num;
printf("Enter size of your array: ");
scanf("%i",&N);
ar = (int*) malloc(N*(sizeof(int))); // создаём динамический массив
// сзаполняем случайными числами и выводим на экран
for(int i(0); i < N; i++){
ar[i] = rand() % (b - a + 1) + a;
printf("%i ",ar[i]);
}
printf("\n");
// преобразуем массив
for(int i(1); i <= N; i++){
if(ar[i] != ar[i-1]) { // если предыдущий элемент был другой, то
N +=1;
ar = (int*) realloc(ar,N*sizeof(int)); // увеличиваем размер массива на один элемент
// и смещаем массив на один элемент вправо, оставляя на месте предыдущие элементы
for(int j(N); j >= i; j--)
ar[j] = ar[j-1];
i++;
}
}
for(int i(0); i < N; i++) // выводим преобразованный массив
printf("%i ",ar[i]);
//free(ar); // не хочет очищаться (
getch();
return 0;
}