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