Преобразовать целочисленный массив Х, расположив в начале его четные, а затем нечетные элементы - C (СИ) (150212)
Формулировка задачи:
Преобразовать целочисленный массив Х, расположив в начале его четные, а затем нечетные элементы, сохранив в каждой из двух групп относительный порядок элементов.
Группа с нечетными элементами выводиться в обратном порядке, как изменить порядок?
#include "stdafx.h" #include "conio.h" #include "stdio.h" #include "stdlib.h" #include <locale> int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL, "russian_russia.1251"); int a[100],i,n,j,dop,n1; printf("Введите размер массива Х \n"); scanf("%d",&n); printf("Массив Х \n"); int max1=-100; for(i=0;i<n;i++) { a[i]=25-rand()%50; printf("%d ",a[i]); if(max1<abs(a[i])) {max1=a[i]; n1=i;} } printf("\nМаксимальный элемент = %d\nНомер максимального элемента = %d ",max1,n1); for(i=0;i<n;i++) for(j=i;j<n;j++) { if(a[i]%2!=0) { dop=a[i]; a[i]=a[j]; a[j]=dop; } } printf("\nПреобразованный массив В\n"); int n2, max2=-1000; for(i=0;i<n;i++) { printf("%d ",a[i]); if(max2<abs(a[i])) {max2=a[i]; n2=i;} } printf("\nМаксимальный элемент = %d\nНомер максимального элемента = %d ",max2,n2); getch(); return 0; }
Решение задачи: «Преобразовать целочисленный массив Х, расположив в начале его четные, а затем нечетные элементы»
textual
Листинг программы
#include <stdio.h> int* part_seq(int* fa, int* la, int (*cmp)(int)){ int t, *i, *p = fa; for(; fa != la; ++fa){ if((*cmp)(*fa)){ for(i = fa; i > p; --i){ t = *i; *i = *(i - 1); *(i - 1) = t; } ++p; } } return p; } static int compare(int n){ return ((n % 2) == 0); } int main(void){ int* e, *p; int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int n = sizeof(a)/sizeof(a[0]); e = part_seq(a, a + n, &compare); //вывести чётные for(p = &a[0]; p != e; ++p) printf("%d ", *p); putchar('\n'); //вывести нечётные for(p = e; p != &a[n]; ++p) printf("%d ", *p); putchar('\n'); //вывести все for(p = &a[0]; p != &a[n]; ++p) printf("%d ", *p); return 0; }
Объяснение кода листинга программы
- В функции
part_seq
идет сортировка массива по четности с помощью функцииcompare
. - В функции
main
определен массивa
размером 9. - Затем, в функции
main
, вызывается функцияpart_seq
для сортировки массиваa
по четности, сохраняя порядок нечетных и четных элементов. - Результат сортировки выводится сначала на экран, затем выводится сам массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д