Задание: дан массив из 15 рандомных чисел от -10 до 10.
Задание: дан массив из 15 рандомных чисел от -10 до 10. Необходимо числа отсортировать так: поначалу отрицательные на убавленье, позже положительные на уменьшение.
Написать на с++, желательно через циклы !
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;
-
Вопросы ответы
Статьи
Информатика
Статьи
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.
Химия.
Русский язык.
Разные вопросы.