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

Ответы 6

  • Огромное спасибо :)
  • Мне только для Лазаруса нужно, но попробую с этим разобраться ;)
    • Автор:

      rogers
    • 6 лет назад
    • 0
  • Тогда так тебе проще будет разобраться и перевести в паскаль.. #include <ctime> #include <algorithm> int main(){ // Заполняем. const int n = 1000; std::srand(time(0)); int arr[n]; // Заполняем случайными числами. for (int i = 0; i < n; ++i){ arr[i] = std::rand(); }
  • // Находим первые два четных элемента. int iEven1; for (int i = 0; i < n; ++i){ if (arr[i] % 2 == 0) { iEven1 = i; break; } } int iEven2; // Номер четного элемента. for (int i = iEven1+1; i < n; ++i){ if (arr[i] % 2 == 0) { iEven2 = i; break; } }
  • // Изменяем. bool isTurn = false; int nEven1 = arr[iEven1]; // Значение четного элемента. int nEven2 = arr[iEven2]; for (int i = iEven2 +1; i < n; ++i){ int t = arr[i]; arr[i] = nEven1 * nEven2; // Если число не четное, не запоминаем его. Цикл сначала. if (t % 2 != 0) continue; // Очередность. isTurn = !isTurn; if (isTurn) nEven1 = t; else nEven2 = t; }
    • Автор:

      taniyah
    • 6 лет назад
    • 0
  • #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;}
    • Автор:

      dangelo
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years