Динамические массивы. Не выводится итоговый массив
Написать функцию, которая получает указатель на динамический массив и его размер. Функция должна удалить из массива все простые числа и вернуть указатель на новый динамический массив.
Подскажите где ошибка. Не выводится итоговый массив.
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
const int size = 10;
int *funcmass(int *arr, int &size)
{
int *arr2 = new int[size];
int size2 = 0;
if (arr2)
{
for (int i = 0; i < 0; i++)
{
int tmp = *(arr + 1);
for (int j = 2; j <= tmp; j++)
if (j != tmp && tmp % j == 0)
{
arr2[size2++] = tmp;
break;
}
}
}
size = size2;
delete[] arr2;
arr = arr2;
return arr2;
}
int main()
{
setlocale(LC_ALL, "Rus");
srand(time(NULL));
int size = 10;
int *mass = new int[size];
for (int i = 0; i < size; i++)
{
*(mass + i) = rand() % 10;
cout << *(mass + i) << " ";
}
cout << endl;
mass = funcmass(mass, size);
for (int i = 0; i < size; i++)
{
cout << mass[i] << " ";
}
cout << endl;
delete[] mass;
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
У вас не сказано, что нужно удалять прежний массив. Поэтому достаточно вернуть новый и его размер. Так что мое решение такое:
bool prime(int n) {
if (n == 2) return true;
if (n % 2 == 0) return false;
for (int j = 3; j * j <= n; j += 2)
if (n % j == 0) return false;
return true;
}
int* funcmass(int* arr, int& size) {
int* arr2 = new int[size];
int size2 = 0;
for (int i = 0; i < size; i++) {
if (prime(arr[i])) continue;
arr2[size2++] = arr[i];
}
size = size2;
return arr2;
}
int main() {
srand(time(NULL));
int size = 10;
int* mass = new int[size];
for (int i = 0; i < size; i++) {
*(mass + i) = rand() % 10;
cout << *(mass + i) << " ";
}
cout << endl;
int* mass2 = funcmass(mass, size);
for (int i = 0; i < size; i++) {
cout << mass2[i] << " ";
}
cout << endl;
delete[] mass;
delete[] mass2;
}