Задание: дан массив из 15 рандомных чисел от -10 до 10.

Задание: дан массив из 15 рандомных чисел от -10 до 10. Необходимо числа отсортировать так: поначалу отрицательные на убавленье, позже положительные на уменьшение.
Написать на с++, желательно через циклы !

Задать свой вопрос
1 ответ

include lt;iostreamgt;

include lt;ctimegt;


using namespace std;


void fill_array(int* array, int size, int min,int max)

srand(time(NULL));

for(int i = 0;i lt; size;i++)

array[i] = rand() % (max * 2 + 1) + min;

void print_array(int* array, int size)

for(int i = 0;i lt; size;i++)

cout lt;lt; array[i] lt;lt; "\t";

cout lt;lt; endl;

int get_count_of(bool (*predicate)(int),int *array, int size)

int count = 0;

for(int i = 0;i lt; size; i++)

if(predicate(array[i]))

count++;

return count;

void sort_array(int* array, int size)

for(int i = 0; i lt; size; i++)

for(int j = 0;jlt;size - 1;j++)

if(array[j] lt; array[j + 1])

swap(array[j],array[j + 1]);


int main(int argc, char** argv)

int array_size = 15;

int* array = new int[array_size];//Создать массив

fill_array(array,array_size,-10,10);//Заполнить его случайными значениями

print_array(array,array_size);//Вывести массив на экран

sort_array(array,array_size);//Отсортировать его

int negative_numbers_count = get_count_of([](int number) return number lt; 0; , array,array_size); //Количество отрицательных элементов

int positive_numbers_count = array_size - negative_numbers_count;//Количество положительных элементов

int *positive_numbers = new int[positive_numbers_count];//Массив положительных частей

int *negative_numbers = new int[negative_numbers_count];//Массив отрицательных частей

int *pos_start = positive_numbers;//Указатель на начало массива положительных частей

int *neg_start = negative_numbers;//Указатель на начало массива отрицательных частей

for(int i = 0; i lt; array_size; i++)//Заполнение массивов

if(i lt; positive_numbers_count)

(*positive_numbers++) = array[i];

else

(*negative_numbers++) = array[i];

positive_numbers = pos_start;//Отдаём указатель на место

negative_numbers = neg_start;//Отдаём указатель на место

/*Тут выполняется ваше требование.

* Поначалу идут положительные числа в порядке убывания.

* Позже идут отрицательные числа в порядке убывания.*/

for(int i = 0; i lt; array_size; i++)

if(i lt; positive_numbers_count)

array[i] = (*positive_numbers++);

else

array[i] = (*negative_numbers++);

print_array(array,array_size); //Вывести отсортированный массив

/*Освобождаем память*/

delete[] pos_start;

delete[] neg_start;

delete[] array;

, оставишь ответ?
Имя:*
E-Mail:


Последние вопросы

Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт