Вопрос по алгоритму сортировки в С++

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Гость
#1
то нибудь знает алгоритм сортировки который может “Для отдельных цехов и по предприятию в целом подсчитать средний процент”
 
G

Guest

Гость
#3
Код:
struct Data
{
Dept dept; // идентификатор цеха
Something something; // всякая ботва
double rate; // тот самый процент
};

container<Data> cont; // какой-то контейнер (вектор, список, всё что хошь)

// среднее по всем
struct add_rate
{
double operator()(double sum, const Data& data) const
{ return sum + data.rate; }
};

double avg = cont.empty() ? 0 : accumulate(cont.begin(), cont.end(), 0, add_rate()) / cont.size();

// среднее по каждому
struct statistics
{
double sum; int count;
statistics() : sum(0), count(0) {}
void operator +=(double rate) { sum += rate; ++count; }
double avg() const { return count ? sum/count : 0; }
};

map<Dept, statistics> rates;

struct add_rates
{
map<Dept, statistics> &rates;
add_rates(map<Dept, statistics>& r) : rates(r) {}
void operator()(const Data& data) const
{ rates[data.dept] += data.rate; }
};

for_each(cont.begin(), cont.end(), add_rates(rates));
 
Статус
Закрыто для дальнейших ответов.