Вывести вначале массива нечетные элементы, в конце - чётные - 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;
}
Объяснение кода листинга программы
Вывод нечетных элементов в начале и четных в конце можно объяснить следующим образом:
- В функции func происходит перестановка четных и нечетных элементов в массиве.
- Переменная
lastинициализируется значением размера массива минус один. - Если
lastделится на два без остатка, то вычитается единица, чтобы последняя пара четных элементов оказалась на своем месте. - В цикле происходит перестановка четных и нечетных элементов, начиная с начала массива и до предпоследнего элемента.
- Во втором цикле происходит вывод элементов массива в консоль.
- Возвращаемое значение функции func не используется.
- В функции main создается массив заданного размера и заполняется с помощью функции scanf.
- Вызывается функция func для перестановки четных и нечетных элементов.
- Выводится содержимое массива с помощью цикла и функции printf.
- Программа возвращает ноль, что означает успешный конец работы.