Не могу завершить программу с массивами! Помогите!

В одномерном массиве, состоящем из п целых элементов, вычислить:

  1. минимальный по модулю элемент массива;
  2. сумму модулей элементов массива, расположенных после первого элемента, равного нулю. Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине - элементы, стоявшие в нечетных позициях. Вот код который практически завершен:

#include <stdio.h>
#include <math.h>
#include <stdbool.h>
int main()
{
    int sum = 0;
    bool flag = 0;
  int array[100], size, c, location = 0;

  printf("Enter number of elements in array\n");
  scanf("%d", &size);

  printf("Enter %d integers\n", size);

  for (c = 0; c < size; c++)
    scanf("%d", &array[c]);

  for (c = 1; c < size; c++)
    if (array[c] < array[location])

      location = c;


  printf("Minimum element is present at location %d and its value is %d.\n", location+1, array[location]);
 for (int i = 0; i < size; i++)
{
if(array[i] == 0){
flag = 1;
}

if(flag == 1){
sum += abs(array[i]);
}
}
printf("The sum of the modules of elements after 0 is %d", sum);
  return 0;
}

Я выполнил первые 2 пункта, но не имею понятия, как ,,Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине - элементы, стоявшие в нечетных позициях.,, Помогите пожалуйста!


Ответы (1 шт):

Автор решения: AlexGlebe
// временный массив
int temp[100];

// индексы для чтения из оригинального массива
// а также временного
int ifrom=0 , ito=0;

while ( ifrom < size ) {

  // читаем чётные индексы ([0],[2],[4],..)
  // пишем подряд ([0],[1],[2],..)

  temp[ito] = array[ifrom];
  ifrom += 2 ;
  ++ ito ; }

// продолжаем писать в temp
// читаем по новой по нечётным индексам
ifrom = 1 ; 

while ( ifrom < size ) {

  // читаем чётные индексы ([1],[3],[5],..)
  // пишем подряд ([+0],[+1],[+2],..)

  temp[ito] = array[ifrom];
  ifrom += 2 ;
  ++ ito ; }

дальше массив temp переписываете в array сами.

→ Ссылка