Преобразовать целочисленный массив Х, расположив в начале его четные, а затем нечетные элементы - 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;
}

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

  1. В функции part_seq идет сортировка массива по четности с помощью функции compare.
  2. В функции main определен массив a размером 9.
  3. Затем, в функции main, вызывается функция part_seq для сортировки массива a по четности, сохраняя порядок нечетных и четных элементов.
  4. Результат сортировки выводится сначала на экран, затем выводится сам массив.

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


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

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

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