Показать сообщение отдельно
Старый 30.10.2012, 23:45   #5 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

Вот только компилятор другой (первую задачу не я писал)

Цитата:
#include <algorithm>
#include <boost/algorithm/minmax_element.hpp>

typedef std:air<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);
}
}
Gruvi вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070