Переставить числа последовательности таким образом, чтобы в начале этой последовательности оказались все положительные числа, а в конце отрицательные - C (СИ)
Формулировка задачи:
пусть задана последовательность чисел N1, N2, ..., Nk, состоящая из положительных и отрицательных значений. составить блок схему и программу для перестановки чисел последовательности таким образом, чтобы в начале этой последовательности оказались все положительные числа, а в конце отрицательные.
Помогите пожалуйста) Экзаменационная задача(
Решение задачи: «Переставить числа последовательности таким образом, чтобы в начале этой последовательности оказались все положительные числа, а в конце отрицательные»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int cmp(const void *p1, const void *p2)
{
return *((const int*)p2) - *((const int*)p1);
}
#define SIZE 15
void dump(int *ptr, size_t size, const char *fmt)
{
while (size--)
printf(fmt, *ptr++);
}
int main(void)
{
int array[SIZE];
int i;
srand(time(0u));
for (i = 0; i < SIZE; i++)
array[i] = rand() % 21 - 10;
dump(array, SIZE, "%d ");
putchar('\n');
qsort(array, SIZE, sizeof(int), cmp);
dump(array, SIZE, "%d ");
putchar('\n');
return 0;
}
Объяснение кода листинга программы
В этом коде реализована сортировка массива методом быстрой сортировки (quick sort). Список действий:
- Создаётся функция
cmp, которая будет использоваться в качестве аргумента для функцииqsort. Эта функция сравнивает два указателя на int и возвращает значение, которое определяет порядок следования этих двух int в отсортированной последовательности. - Определяется константа
SIZEдля представления размера массива. - Создаётся функция
dump, которая используется для вывода значений массива. Она принимает три аргумента: указатель на первый элемент массива, размер массива и строку формата, которая будет использоваться при выводе. - В функции
mainсоздаётся массивarrayразмеромSIZE. - Инициализируется генератор случайных чисел с помощью функции
srand(time(0u)). - В цикле заполняется массив
arrayслучайными числами с помощью функцииrand() % 21 - 10. - Выводится содержимое массива с помощью функции
dumpи символа перевода строки\n. - Массив
arrayсортируется с помощью функцииqsortс использованием функцииcmpв качестве аргумента. - Выводится отсортированный массив с помощью функции
dumpи символа перевода строки\n. - Программа возвращает 0, что означает успешное завершение работы.