Переставить элементы массива так, чтобы сначала шли единицы, а затем двойки - C (СИ)
Формулировка задачи:
Задача такова:
В массиве с 10 элементами, состоящим из единиц и двоек, сделать так, чтобы сначала были единицы, а затем двойки
#include <stdio.h> #include <math.h> #include <conio.h> #define N 10 main() { int i,k,A[N]; printf("\n Vvedite massiv: \n"); for(i=0;i<N;i++) scanf("%d",&A[i]); k=0; for(i=0;i<N;i++) k=k+A[i]; for(i=0;i<=k;i++) A[i]=1; for(i=k+1;i<N;i++) A[i]=2; for(i=0;i<N;i++) printf(" %d ", A[i]); getch(); }
Решение задачи: «Переставить элементы массива так, чтобы сначала шли единицы, а затем двойки»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int comp (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } int main() { int arr[10]; for(int i = 0; i < 10; ++i) scanf("%d", &arr[i]); qsort(arr, 10, sizeof(int), comp); for(int i = 0; i < 10; ++i) printf("%d", arr[i]); return 0; }
Объяснение кода листинга программы
В данном коде используется стандартная функция сортировки qsort(), которая сортирует массив arr[] по возрастанию. В функции сортировки необходимо указать:
- Указатель на начало массива arr[] — first;
- Количество элементов в массиве — n;
- Размер одного элемента массива — size;
- Указатель на функцию сравнения — compar. В данном случае, функция сравнения comp() сравнивает элементы массива по возрастанию. Примерно так происходит сортировка массива:
- Ввод элементов массива с клавиатуры.
- Вызов функции сортировки qsort(arr, 10, sizeof(int), comp).
- Вывод отсортированного массива на экран. Стоит отметить, что в данном коде нет проверки на ошибки ввода-вывода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д