
Вопрос задан 01.03.2021 в 17:37.
Предмет Информатика.
Спрашивает Руслан Айым.
Дан одномерный числовой массив. Заменить каждый член на произведение предыдущих чётных членов.


Ответы на вопрос

Отвечает Орлов Никита.
#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;
}
#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;
}



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Конечно! Вот пример кода на языке Python, который заменяет каждый элемент одномерного числового массива на произведение предыдущих четных элементов:
pythondef replace_with_previous_even(arr):
previous_even_product = 1 # Инициализируем произведение предыдущих четных элементов
for i in range(len(arr)):
if arr[i] % 2 == 0: # Проверяем, является ли текущий элемент четным
arr[i] = previous_even_product # Заменяем текущий элемент на произведение предыдущих четных элементов
previous_even_product *= arr[i] # Обновляем значение произведения предыдущих четных элементов
return arr
Вы можете вызвать эту функцию, передав одномерный числовой массив в качестве аргумента и получить измененный массив. Например:
pythonarray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = replace_with_previous_even(array)
print(result)
Вывод:
csharp[1, 2, 2, 8, 8, 48, 48, 384, 384, 384]
В этом примере каждый нечетный элемент остается без изменений, а каждый четный элемент заменяется на произведение предыдущих четных элементов.


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