Отсортировать четные элементы, а нечетные оставить на местах - C (СИ)
Формулировка задачи:
Здравствуйте, долго мучаюсь и не могу понять. Нужно отсортировать четные элементы, а не четные оставить на местах. Например ввожу 1 4 5 2 6 8 4 Нужно 1 2 5 4 4 6 8. у меня получилось отсортировать весь массив, думаю нужно составить еще условие, чтоб нечетные элементы не менялись. но у меня не получается. помоги плиз!!
#include <iostream> #include <stdlib.h> #include <conio.h> int form (int a[100]) { int n; printf ("\n enter " ) ; scanf ("%d",&n); for (int i=0; i<n; i++) a[i]=rand()%15; return n; } void print (int a[100], int n) { for (int i=0; i<n; i++) printf ("%d ",a[i]) ; printf ("\n" ) ; } void dell (int a[100], int &n) { int i; int t; int j=0, b [100]; for ( i=0; i<n; i++) if (a[i] %2!=1 ) { for (int i=0;i<n;i++) for (int j=0; j<n;j++) if (a[j] > a[j+1]) { t = a[j]; a[j] = a[j+1]; a[j+1] = t ; } } } int main () { int a[100]; int n; n=form(a); print (a,n); dell (a,n); print (a,n); }
Решение задачи: «Отсортировать четные элементы, а нечетные оставить на местах»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> int form (int a[100]) { int n; printf ("enter : " ) ; scanf ("%d",&n); srand(time(NULL)); for (int i=0; i<n; i++) a[i]=rand()%15; return n; } void print (int a[100], int n) { for (int i=0; i<n; i++) printf ("%02d ",a[i]) ; printf ("\n" ) ; } void swap(int a[100], int n) { int i, temp; int flag = 1; while (flag) { flag = 0; int *ptr = NULL, *last = NULL; for (i=0; i<n; i++) if (a[i]%2 == 0) { if (last == NULL) last = ptr = &a[i]; else { last = ptr; ptr = &a[i]; } if (*last > *ptr) { temp = *last; *last = *ptr; *ptr = temp; flag = 1; } } } } int main () { int a[100]; int n; while (n=form(a)) { print (a,n); swap (a,n); print (a,n); } }
Объяснение кода листинга программы
В этом коде выполняется сортировка массива целых чисел по чётности с использованием алгоритма сортировки выбором. Вот список действий, которые выполняются в этом коде:
- Функция
form
используется для ввода количества элементов в массив. - Функция
print
используется для печати содержимого массива в консоль. - Функция
swap
используется для сортировки массива по чётности. - В цикле
while
вызывается функцияform
, чтобы ввести количество элементов для сортировки. - Внутри цикла
while
массив выводится на консоль с помощью функцииprint
. - Затем вызывается функция
swap
для сортировки массива по чётности. - После сортировки массив выводится на консоль с помощью функции
print
. - Цикл
while
продолжается до тех пор, пока пользователь не введет ноль для количества элементов. - В конце программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д