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