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

Дан одномерный числовой массив. Заменить каждый член на произведение предыдущих чётных членов.
Гость
Ответ(ы) на вопрос:
Гость
#include   #include   #include     int main() {     // Заполняем.     const int n = 1000;     std::srand(time(0));     std::vector 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; }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы