Динамические массивы. Не выводится итоговый массив

Написать функцию, которая получает указатель на динамический массив и его размер. Функция должна удалить из массива все простые числа и вернуть указатель на новый динамический массив.

Подскажите где ошибка. Не выводится итоговый массив.

#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;
    }
→ Ссылка