Переставить элементы массива так, чтобы сначала шли единицы, а затем двойки - 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[] по возрастанию. В функции сортировки необходимо указать:

  1. Указатель на начало массива arr[] — first;
  2. Количество элементов в массиве — n;
  3. Размер одного элемента массива — size;
  4. Указатель на функцию сравнения — compar. В данном случае, функция сравнения comp() сравнивает элементы массива по возрастанию. Примерно так происходит сортировка массива:
  5. Ввод элементов массива с клавиатуры.
  6. Вызов функции сортировки qsort(arr, 10, sizeof(int), comp).
  7. Вывод отсортированного массива на экран. Стоит отметить, что в данном коде нет проверки на ошибки ввода-вывода.

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


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

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

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