Перенести в начало массива все положительные элементы, а в конец массива - все отрицательные - 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, заканчивая свое выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д