C/C++

Помогите пожалуйста срочно в С++

Написать программу на языке С++ для создания динамического массива A[N], заполнить массив с помощью генератора случайных чисел (получение случайного числа в интервале [a,b] оформить как функцию (а=-30,b =30)). Полученный массив отсортировать по возрастанию и записать в новый массив B[M] только отрицательные числа, а старый массив А удалить из памяти.
Сортировку массива оформить как функцию.
 #include //для ввода/вывода
#include //для time
#include //для rand и srand

int get_rand(int a, int b) //требуемая по заданию функция
{
return rand() % (b - a + 1) + a;
}

void sort(int* arr, int n) //функция сортировки
{
bool ready = true; //досрочный выход из цикла если перестановок не было
int tmp; //временная переменная для перестановки
while (ready) //цикл сортировки
{
ready = false; //устанавливаем факт перестановки в false
for (int i = 0; i < n - 1; i++) //цикл сравнения соседних элементов
{
if (arr[i] > arr[i + 1]) //если предыдущий элемент больше
{
tmp = arr[i]; //
arr[i] = arr[i + 1];//переставляем их местами
arr[i + 1] = tmp; //
ready = true;//запоминаем факт перестановки
}
}
n--; //смещаем правую границу, так как после одного цикла справа гарантированно
//окажется наибольший элемент который не нуждается в сортировке
}
}

int main()
{
srand(time(nullptr)); //инициализация генератора случайных чисел
int N, b_size = 0; //размеры массивов А и Б
std::cin >> N; //ввод размера массива А
int* A = new int[N]; //выделение памяти под массив А
for (int i = 0; i < N; i++) A[i] = get_rand(-30, 30); //заполнение массива А функцией рандомных чисел
for (int i = 0; i < N; i++) std::cout
Игорь Чаплинский
Игорь Чаплинский
51 416
Лучший ответ
Николай Миронов Спасибо вам большое вы мне очень помогли.
 #include      
#include
#include
#include

using namespace std;

int* random_fill(const size_t n) {
auto box = new(nothrow) int[n];
if (box != nullptr) {
const auto a = -30;
const auto b = 30;
uniform_int_distribution uid(a, b);
mt19937 gen{ random_device()() };
for (size_t i = 0; i < n; ++i) {
box[i] = uid(gen);
}
}
return box;
}

void show(int* box, const size_t n) {
for (size_t i = 0; i < n; ++i) {
cout = 0; });
auto m = distance(a, pos);
auto b = random_fill(m);
copy(a, a + m, b);
delete[] a;
show(b, m);
delete[] b;
}
Сергей Фалин
Сергей Фалин
99 069
У меня так:
 #include  
#include
#include
#include

using namespace std;

int i, j;

int randint()
{ return rand() % 61 - 30; }

void bubble_sorting(int *A, int n)
{
for (i = 1; i < n; i++)
for (j = n - 1; j >= i; j--)
if (A[j - 1] > A[j]) swap(A[j - 1], A[j]);
}

int print(int X[], int n, string s)
{
cout
Николай Миронов Спасибо вам большое
Роман Машевец Можно точно такой же код только для положительных чисел? Пожалуйста !
 #include   
#include
#include
#include

static int comp(const void *i, const void *j)
{
return *(int*)i - *(int*)j;
}

static void array_fill_rnd(int *array, size_t size)
{
int i;

srand(time(NULL));

for (i = 0; i < size; i++) {
array[i] = rand() % 60 - 30 - 1;
}
}

static void array_print(const int *array, size_t size)
{
int i;

for (i = 0; i < size; i++) {
printf("%d ", array[i]);
}

putchar('\n');
}

int main(void)
{
int *A, *B = NULL;
int n, m = 0;
int i;

printf("n: ");
scanf("%d", &n);

A = calloc(n, sizeof *A);
array_fill_rnd(A, n);

printf("A: ");
array_print(A, n);

qsort(A, n, sizeof *A, comp);

printf("A sorted: ");
array_print(A, n);

for (i = 0; i < n; i++) {
if (A[i] < 0) {
B = (int*) realloc(B, (++m) * sizeof *B);
B[m - 1] = A[i];
}
}

printf("B: ");
array_print(B, m);
return 0;
}