Вопрос по информатике:
Дан одномерный числовой массив. Заменить каждый член на произведение предыдущих чётных членов.
- 27.05.2018 12:05
- Информатика
- remove_red_eye 15461
- thumb_up 21
Ответы и объяснения 1
#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;
}
- 28.05.2018 09:21
- thumb_up 41
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.