Как отсортировать массив целых рандомных чисел по негативным и позитивным числам? - C (СИ)
Формулировка задачи:
Условия задачи.
Нужно создать массив целых чисел размером в 100 элементов. Они заполняются рандомно от -100 до 100.Это я знаю.А вот дальше нужно все позитивные элементы разместить в левой части массива,а негативные( с минусом) в правой.А нули между ними.
#include "stdafx.h"
#include <stdio.h>
void main(void)
{
int a[100];
randomize();
for (int i = 0 ; i < 100 ; i++)
a[i]=random(100)-100; // случайное число [-100;100];
return 0;
}Решение задачи: «Как отсортировать массив целых рандомных чисел по негативным и позитивным числам?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define HUNDRED_NUMBERS (20)
#define LOW (-10)
#define HI (10)
#define bounded_rand() ( rand() % ( HI - LOW + 1 ) + LOW )
int cmp(const void * pA, const void * pB) {
int a = *(int*)pA;
int b = *(int*)pB;
if ( a > 0 )
return -1 * ( b <= 0 );
else if ( b > 0 )
return 1;
else if ( a == 0 )
return -1 * ( b < 0 );
else
return ( b == 0 );
}
void fill(int * array, size_t count) {
while ( count-- )
*array++ = bounded_rand();
}
void dump(int * array, size_t count) {
while ( count-- )
printf("%d%c", *array++, ( count ) ? ' ' : '\n');
}
int main(void) {
int array[HUNDRED_NUMBERS];
srand(time(NULL));
fill(array, HUNDRED_NUMBERS);
dump(array, HUNDRED_NUMBERS);
qsort(array, HUNDRED_NUMBERS, sizeof(int), cmp);
dump(array, HUNDRED_NUMBERS);
return 0;
}
Объяснение кода листинга программы
Вот что делает этот код:
- #include
— подключает необходимые функции для работы с консолью - #include
— подключает функции для работы с памятью и сортировкой - #include
— подключает функции для работы со временем - #define HUNDRED_NUMBERS (20) — определяет количество чисел в массиве (20)
- #define LOW (-10) — определяет нижнюю границу для генерации случайных чисел
- #define HI (10) — определяет верхнюю границу для генерации случайных чисел
- bounded_rand() — функция для генерации случайного числа в заданном диапазоне [-10, 10]
- int cmp(const void pA, const void pB) — функция сравнения для сортировки массива
- *void fill(int array, size_t count)** — функция для заполнения массива случайными числами
- *void dump(int array, size_t count)** — функция для вывода содержимого массива на консоль
- int main(void) — точка входа в программу
- int array[HUNDRED_NUMBERS] — объявление массива для хранения 20 чисел
- srand(time(NULL)) — инициализация генератора случайных чисел текущим временем
- fill(array, HUNDRED_NUMBERS) — заполнение массива случайными числами
- dump(array, HUNDRED_NUMBERS) — вывод содержимого массива на консоль
- qsort(array, HUNDRED_NUMBERS, sizeof(int), cmp) — сортировка массива с помощью функции qsort и сравнения в функции cmp
- dump(array, HUNDRED_NUMBERS) — вывод отсортированного массива на консоль
- return 0; — завершение программы