В массиве X[N] перед каждым чётным элементом вставить его удвоенное значение - C (СИ)
Формулировка задачи:
Буферный массив не использовать. Размерность и элементы массива вводит пользователь. Помогите пожалуйста с кодом.
Решение задачи: «В массиве X[N] перед каждым чётным элементом вставить его удвоенное значение»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- int main()
- {
- int i, j, count = 0, *arr;
- unsigned N;
- puts("Enter array's size:");
- while(1 != scanf("%u", &N)){
- puts("Error!Try again:");
- getchar();
- }
- arr = malloc(N * sizeof *arr);
- srand(time(NULL));
- for(i = 0; i < N; i++){
- printf("%d ", *(arr + i) = rand() % 30 - 14);
- if(!(*(arr + i) & 1))
- count++;
- }
- putchar('\n');
- arr = realloc(arr, (N + count) * sizeof*arr);
- for(i = N + count - 1, j = N - 1; j >= 0; j--, i--){
- if(!(*(arr + j) & 1)){
- *(arr + i) = *(arr + j);
- i--;
- *(arr + i) = *(arr + j) * 2;
- }
- else
- *(arr + i) = *(arr + j);
- }
- putchar('\n');
- for(i = 0; i < N + count; i++)
- printf("%d ", *(arr + i));
- putchar('\n');
- return 0;
- }
Объяснение кода листинга программы
В этом коде:
- Пользователю предлагается ввести размер массива.
- Массив инициализируется случайными целыми числами от -14 до 14.
- Переменная count отслеживает количество чётных элементов в массиве.
- Массив освобождается и заново выделяется память под массив, увеличенный на количество чётных элементов.
- В цикле добавляются чётные элементы, удваивая их значение и вставляя перед каждым чётным элементом.
- Выводится обновлённый массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д