Продублировать в массиве все четные числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дан целочисленный массив размера N. Продублировать в нем все четные числа. Не могу понять как продублировать элементы и записать их правильно в массив не потеряв других элементов. Код на Си. Помогите кто чем может. Спасибо)

Решение задачи: «Продублировать в массиве все четные числа»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
int main(void) {
    unsigned n;
    
    srand(time(NULL));
    
    while ( printf("Number of elements: ") && scanf("%u", &n) == 1 && n ) {
        unsigned i = 0;
        int * array = malloc(sizeof(int) * n * 2);
        
        if ( ! array ) {
            perror("Memory error!\n");
            exit(EXIT_FAILURE);
        }
        
        while ( i < n )
            array[i++] = rand() % 100;
        
        printf("Origin:\n");
        for ( i = 0; i < n; ++i )
            printf("%d ", array[i]);
        
        i = 0;
        while ( i < n ) {
            if ( ! ( array[i] & 1 ) ) {
                memmove(array + i + 1, array + i, sizeof(int) * (n - i + 1));
                i += 2;
                n += 1;
            }
            else
                ++i;
        }
        
        printf("\nDoubling even values:\n");
        for ( i = 0; i < n; ++i )
            printf("%d ", array[i]);
        printf("\n");
        
        free(array);
    }
    
    return 0;
}

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


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

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

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