Помогите пожалуйста. Как последний элемент массива корректно проверить по условию?

Задание - нечётные числа массива нужно удвоить, а чётные получены добавлением собственного значения с начальным значением следующего элемента.

Как и где написать условие, если последний элемент массива вдруг оказался четным?

Кусочек моего кода:

for (int i = 0; i < N; i++)
{
    if (arr[i] % 2 != 0)
    {
        arr[i] = arr[i] * 2;
    }
    else
    {
        arr[i] = arr[i] + arr[i + 1];
    }
                 
    cout << " " << arr[i];
}

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

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

Я бы так сделал. Лучше вынести лишнюю проверку за пределы, тк она нужна нам будет только один раз.

// Проходим массив по элементам N - 1 (Кроме последнего)
for (int i = 0; i < N - 1; ++i)
{
    arr[i] = (arr[i] % 2 != 0) ? arr[i] * 2 : arr[i] + arr[i + 1];
}
// Заполняем последний по условию
arr[N - 1] = (arr[N - 1] % 2 != 0) ? arr[N - 1] * 2 : arr[N - 1];

Или если продолжить ваш вариант.

for (int i = 0; i < N; ++i)
{
    if (arr[i] % 2 != 0)
    {
        arr[i] *= 2;
    }
    else
    {
        arr[i] += arr[i + 1];
    }
}

if (arr[N - 1] % 2 != 0)
{
    arr[N - 1] *= 2;
}
→ Ссылка
Автор решения: AR Hovsepyan

Для чего исключение? Тут нет исключительных ситуаций. Нужно лишь условие:

for (int i = 0; i < N; i++)
{
    if (arr[i] % 2 != 0)
    {
        arr[i] *= 2;
    }
    else if( i != N - 1)
    {
        arr[i] += arr[i + 1];
    }
                   
    cout << " " << arr[i];
}

хоть и для int не существенно, но все же операторы *=, +=... быстрее чем операторы * , + с последующим присваиванием

→ Ссылка