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