Перенести в начало массива все положительные элементы, а в конец массива - все отрицательные - 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;
}

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

  1. В функции array_part происходит сортировка массива по заданному условию (в данном случае, положительные числа в начало, отрицательные в конец).
  2. В функции compare определяется условие сравнения (в данном случае, больше 0).
  3. В функции main создается и инициализируется массив a.
  4. Задается переменная n, которая содержит размер массива.
  5. Вызывается функция array_part, которая сортирует массив по условию.
  6. В цикле выводятся элементы отсортированного массива.
  7. Программа возвращает 0, заканчивая свое выполнение.

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


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

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

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