#include <algorithm> #include <boost/algorithm/minmax_element.hpp> typedef std::pair<const int*, const int*> minmax_result; const int N = 10; // для примера последовательность содержит случайные числа static void fill_array(int* parray, size_t dimension) { std::generate_n(parray, dimension, std::rand); } void test1() { /* 1. Дана последовательность из 10 целых чисел. Найти сумму чисел этой последовательности, расположенных между максимальным и минимальными числами (в сумму включить и оба этих числа). */ int arr[N]; fill_array(arr, N); // ищем индексы минимального и максимального элементов minmax_result minmax = boost::minmax_element(arr, arr+N); ptrdiff_t diff = minmax.first - minmax.second; // суммирование int sum; // учтём, что индексы миниального и максимального элемента могут располагаться в массиве как угодно // друг относительно друга. if (diff > 0) { sum = std::accumulate(minmax.second, minmax.first, *minmax.first); } else { sum = std::accumulate(minmax.first, minmax.second, *minmax.second); } } |