Вывести вначале массива нечетные элементы, в конце - чётные - C (СИ)

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

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

Недавно начал изучение C, попалась такое задание в лабораторной работе. Первое задание, в котором надо было упорядочить массив в убывающем порядке, решилось просто, используя следующее:
void Bubble(int A[],int count){
int tmp,i,j;
    for ( i=0;i<count-1;i++)
        for ( j=0; j<count-1;j++)
             if (*(A+j) <*(A+j+1)) {         
                 tmp = *(A+j);
                *(A+j) = *(A+j+1);
                *(A+j+1) = tmp;
                }
Но как сделать так, чтобы выводились вначале массива нечетные элементы, в конце - чётные? Обязательно использование указателей.

Решение задачи: «Вывести вначале массива нечетные элементы, в конце - чётные»

textual
Листинг программы
#include <stdio.h>
 
void func(int* array, int size) {
    int i, last, temp;
    
    last = size - 1;
    
    if ( last % 2 == 0 ) {
        last -= 1;
    }
    
    for ( i = 0; i < last; i += 2, last -= 2 ) {
        temp = *(array+i);
        *(array+i) = *(array+last);
        *(array+last) = temp;
    }
}
 
int main() {
    const int size = 10;
    int array[size];
    int i, last, temp;
    
    for ( i = 0; i < size; i++ ) {
        scanf("%d", &*array+i);
        printf("%dindex=%d\n", i, *(array+i));
    }
    
    func(array, size);
    
    for ( i = 0; i < size; i++ ) {
        printf("%d ", *(array+i));
    }
    
    return 0;
}

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

Вывод нечетных элементов в начале и четных в конце можно объяснить следующим образом:

  1. В функции func происходит перестановка четных и нечетных элементов в массиве.
  2. Переменная last инициализируется значением размера массива минус один.
  3. Если last делится на два без остатка, то вычитается единица, чтобы последняя пара четных элементов оказалась на своем месте.
  4. В цикле происходит перестановка четных и нечетных элементов, начиная с начала массива и до предпоследнего элемента.
  5. Во втором цикле происходит вывод элементов массива в консоль.
  6. Возвращаемое значение функции func не используется.
  7. В функции main создается массив заданного размера и заполняется с помощью функции scanf.
  8. Вызывается функция func для перестановки четных и нечетных элементов.
  9. Выводится содержимое массива с помощью цикла и функции printf.
  10. Программа возвращает ноль, что означает успешный конец работы.

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


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

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

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