Перенести в начало массива все положительные элементы, а в конец массива - все отрицательные - C (СИ)
Формулировка задачи:
Помогите, пожалуйста, написать программу на языке Си:
Дан одномерный массив А, состоящий из N элементов. Перенести в начало массива все положительные элементы, а в конец массива - все отрицательные.
Заранее большое спасибо!)
Решение задачи: «Перенести в начало массива все положительные элементы, а в конец массива - все отрицательные»
textual
Листинг программы
#include <stdio.h> int* array_part(int* fa, int* la, int (*cmp)(int)){ int t, *p = fa; while((fa != la) && (*cmp)(*fa)) ++fa; for(p = fa; fa != la; ++fa){ if((*cmp)(*fa)){ t = *fa; *fa = *p; *p++ = t; } } return p; } static int compare(int n) { return (n > 0); } int main(void){ int i; int a[] = { -1, -2, -3, 1, -4, 2, 3, -5, 4, 5, -6, 6, 7, -7, 8, -9, 9 }; int n = sizeof(a)/sizeof(a[0]); array_part(a, a + n, compare); for(i = 0; i < n; ++i) printf("%d ", a[i]); return 0; }
Объяснение кода листинга программы
- В функции
array_part
происходит сортировка массива по заданному условию (в данном случае, положительные числа в начало, отрицательные в конец). - В функции
compare
определяется условие сравнения (в данном случае, больше 0). - В функции
main
создается и инициализируется массивa
. - Задается переменная
n
, которая содержит размер массива. - Вызывается функция
array_part
, которая сортирует массив по условию. - В цикле выводятся элементы отсортированного массива.
- Программа возвращает 0, заканчивая свое выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д