Переместить элементы массива равные единице в начало - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пожалуйста помогите с сортировкой массива. Сначала идут все элементы равные единице а потом все остальные
Где ошибка?
#include <stdafx.h>
#include "stdio.h"
#include "conio.h"
int main ()
{
    int a[5];
    int k=0,s=0,tmp=0,i;
    printf ("Vvedite massiv\n");
    for (int i=0;i<5; i++)
    {
        scanf ("%i",&a[i]);
    }
    printf ("Sortirovanniy massiv");
    for (int i=0;i>5;i++)
    {
        if (a[i]==1) {tmp=a[i]; a[i]=a[i+1]; a[i+1]=tmp;}
        printf ("%i",a);
    }
    for (int i=0;i>5;i++) {printf ("%i",a[i]);}
 
        getch ();
}

Решение задачи: «Переместить элементы массива равные единице в начало»

textual
Листинг программы
#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <locale>
 
int main()
{
    setlocale(LC_ALL, "");
 
    int arr[] = {1,-2,1,3,4,-1,1,-5,6,7,1,8,1,-9,10};
    const size_t N = sizeof(arr) / sizeof(arr[0]);
    std::partition(arr, arr+N, std::bind2nd(std::equal_to<int>(), 1));
 
    typedef std::ostream_iterator<int> O;
    std::copy(arr, arr+N, O(std::cout, " "));
 
    return 0;
}

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

  1. Подключаются необходимые заголовочные файлы: , , , , .
  2. Устанавливается локальная настройка на русскую локализацию.
  3. Объявляется и инициализируется массив arr типа int, содержащий элементы: 1,-2,1,3,4,-1,1,-5,6,7,1,8,1,-9,10.
  4. Вычисляется размер массива N как результат деления размера массива на размер одного элемента.
  5. Применяется алгоритм std::partition к массиву arr, который переместит элементы равные 1 в начало массива. В качестве третьего аргумента используется функция std::bind2nd, которая создает объект, принимающий два аргумента и возвращающий результат сравнения. В данном случае объект будет проверять, равен ли второй аргумент (который является первым элементом массива) единице.
  6. Копируются элементы массива arr в поток вывода, предварительно преобразуя их в формат для вывода на экран с помощью std::ostream_iterator и перенаправляя пробел после каждого элемента.
  7. Завершается функция main и программа в целом.

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


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

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

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