пятница, 25 октября 2013 г.

C++. Номер максимального элемента массива, произведение элементов массива

В одномерном массиве, состоящем из n целых элементов, вычислить:
- номер максимального элемента массива;
- произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <random>
#include <cstddef>
#include <numeric>
#include <functional>
 
 
int main()
{
    size_t N = 10;
    std::vector<int> v(N);
    std::mt19937 gen { std::random_device()() };
    std::uniform_int_distribution<> uid(-10, 10);
 
    std::generate(v.begin(), v.end(), [&uid, &gen] { return uid(gen); });
    std::copy(v.cbegin(), v.cend(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    auto max = std::max_element(v.cbegin(), v.cend());
    size_t maxNumber = std::distance(v.cbegin(), max) + 1;
    std::cout << "Number of max element is " << maxNumber << std::endl;
 
    auto beg = std::find(v.cbegin(), v.cend(), 0);
    if (beg != v.end())
    {
        auto end = std::find(beg+1, v.cend(), 0);
        long mult = std::accumulate(beg + 1, end, 1, std::multiplies<int>());
        std::cout << "Multiplication of integers between first and second "
                  << "zeroes/end of sequence is " << mult << std::endl;
    }
    else
        std::cout << "This sequence does not contain 0\n";
}

Комментариев нет:

Отправить комментарий