В массиве 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;
}

Объяснение кода листинга программы

В этом коде:

  1. Пользователю предлагается ввести размер массива.
  2. Массив инициализируется случайными целыми числами от -14 до 14.
  3. Переменная count отслеживает количество чётных элементов в массиве.
  4. Массив освобождается и заново выделяется память под массив, увеличенный на количество чётных элементов.
  5. В цикле добавляются чётные элементы, удваивая их значение и вставляя перед каждым чётным элементом.
  6. Выводится обновлённый массив.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы