Отсортировать четные элементы, а не четные оставить на своих сместах - C (СИ)
Формулировка задачи:
#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); }
Решение задачи: «Отсортировать четные элементы, а не четные оставить на своих сместах»
void dell (int a[100], int &n) { int i, j, t; for (int i=0;i<n;i++) for (int j=0; j<n;j++) { if(a[j]%2==0) { int nextj = j; while(++nextj < n) if(a[nextj] % 2 == 0) break; if(nextj > n - 1) nextj = j; if(a[j] > a[nextj]) { t = a[j]; a[j] = a[nextj]; a[nextj] = t ; } } } }
Объяснение кода листинга программы
В данном коде реализована функция dell, которая выполняет сортировку массива a по следующему правилу: сначала в каждой группе четных элементов выбирается наименьший элемент, затем он перемещается на свою позицию в отсортированной части массива. В начале функции объявляются три переменные: i, j, t. Переменная i используется для прохода по массиву в первом цикле, переменная j - во втором цикле. Переменная t используется для временного хранения значения элемента в случае его перемещения. Затем следует двойной цикл, который проходит по всем элементам массива. Если текущий элемент четный (a[j] % 2 == 0), то начинается поиск следующего четного элемента. Для этого используется переменная nextj, которая инициализируется значением j, а затем увеличивается на единицу до тех пор, пока не будет найден следующий четный элемент (если он есть). Если такого элемента нет, то значение nextj устанавливается равным j. Далее выполняется проверка на то, что текущий элемент больше следующего четного элемента. Если это условие выполняется, то значения текущего и следующего элементов меняются местами с помощью временной переменной t. В конце функции возвращается ничего не возвращаемое значение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д