Массив С++ выводит мусор

Имеется задача: в массиве А найти те элементы, которые делятся на 2 с остатком и занести их в новый массив. Думаю сделать с помощью динамического массива, но при выводе выводятся те элементы, которые делятся с остатком, но также и "мусор".

Как это побороть? Если count вставить в размерность динамического массива и цикл, то возникают ошибки.. Уже не знаю, как решить эту элементарную задачу.

using namespace std;

int main()
{
    int array[5] = { 1, 2, 3, 4, 5 };
    int count = 0;

    for (int i = 0; i < 5; i++) 
    { 
        if (array[i] % 2 != 0)

            count++;
    }


    int* newarr = new int[5];


    for (int i = 0; i < 5; i++) 
    {
        if (array[i] % 2 != 0)

            newarr[i] = array[i];
    }


    for (int i = 0; i < 5; i++)
    {
        cout << newarr[i] << "  ";
    }

}```


Ответы (1 шт):

Автор решения: Harry

Ну что хотели - то и получили - заполнили некоторые из мусорных значений числами...

Если уж так хочется ч отдельным массивом (зачем?!!), то

int* newarr = new int[count];
for (int j = 0, i = 0; i < 5; i++) 
    if (array[i] % 2 != 0)
        newarr[j++] = array[i];

for (int i = 0; i < count; i++)
    cout << newarr[i] << "  ";
→ Ссылка