В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
Кейси001
Кейси001
28.01.2022 15:13 •  Информатика

Дан одномерный числовой массив. заменить каждый член на произведение предыдущих чётных членов.

Ответ:
1903vita
1903vita
02.10.2020 05:36
#include <ctime> 
#include <algorithm> 
#include <vector> 
 
int main()
{
    // Заполняем.
    const int n = 1000;
    std::srand(time(0));
    std::vector<unsigned int> arr(n);    
    std::generate(arr.begin(), arr.end(), std::rand);
   
    // Находим первые два четных элемента.        
    auto lambda = [](const unsigned int & i){ return (i % 2) == 0; };
    auto iEven1 = std::find_if(arr.begin(), arr.end(), lambda);
    auto iEven2 = std::find_if(iEven1 + 1 , arr.end(), lambda);
    unsigned int  nEven1 = *iEven1;
    unsigned int  nEven2 = *iEven2;

    // Изменяем.
    bool isTurn = false;
    std::transform(iEven2 + 1, arr.end(), iEven2 + 1,
        [&isTurn, &nEven1, &nEven2](unsigned int i){
            unsigned int t = i;
            i = nEven1 * nEven2;
            if (t % 2) return i;

            isTurn = !isTurn;
            if (isTurn) nEven1 = t;
            else         nEven2 = t;
            return i;
    });
       
    return 0;
}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?