Продублировать в массиве все четные числа - 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;
}