Предмет: Информатика, автор: yusufmamadaliyev5

Написать программу на языке С++ для создания динамического массива A[N] , заполнить массив с помощью генератора случайных чисел (получение случайного числа в интервале [a,b] оформить как функцию (а=-30,b =30)). Полученный массив перезаписать, удалив из него все элемент(ы) значение которых кратно 3 -м.
Перезапись оформить как функцию. Для перезаписи использовать вспомогательный второй массив не разрешается..

Ответы

Автор ответа: makason512
0

#include <iostream>

#include <cstdlib> // для работы с функцией rand()

#include <ctime> // для работы с функцией time()

using namespace std;

const int N = 10; // размер массива

const int a = -30; // нижняя граница интервала

const int b = 30; // верхняя граница интервала

int* createArray(int n)

{

int* arr = new int[n]; // выделяем память под массив

// заполняем массив случайными числами

for (int i = 0; i < n; i++)

arr[i] = a + rand() % (b - a + 1);

return arr;

}

void filterArray(int* arr, int& n)

{

int i = 0;

while (i < n)

{

if (arr[i] % 3 == 0) // если элемент кратен 3

{

// сдвигаем все элементы справа от текущего на одну позицию влево

for (int j = i; j < n - 1; j++)

arr[j] = arr[j + 1];

n--; // уменьшаем размер массива

}

else

i++; // переходим к следующему элементу

}

}

int main()

{

srand(time(0)); // инициализируем генератор случайных чисел

int* arr = createArray(N); // создаем и заполняем массив

filterArray(arr, N); // удаляем элементы, кратные 3

// выводим

массив на экран

for (int i = 0; i < N; i++)

cout << arr[i] << " ";

cout << endl;

delete[] arr; // освобождаем выделенную память

return 0;

(

Обратите внимание, что в функции `filterArray` мы изменяем размер массива `n`, поэтому мы передаем его в функцию по ссылке.

Также обратите внимание, что функция `createArray` возвращает указатель на выделенную память, поэтому нужно освободить ее с помощью оператора `delete[]` в конце программы.)

Похожие вопросы
Предмет: Алгебра, автор: hristina1217