#include "histogram.h"
#include <vector>
#include "histogram_internal.h"

using namespace std;
bool find_minmax(const vector<double>& numbers, double& minp, double& maxp)
{
    if (numbers.size() == 0)
        return false;

    minp = numbers[0];
    for (auto i = 0; i<numbers.size(); i++)
    {
        if (numbers[i]<minp)
        {
            minp = numbers[i];
        }
    }

    maxp = numbers[0];
    for (auto i = 0; i<numbers.size(); i++)
    {
        if (numbers[i]>maxp)
        {
            maxp = numbers[i];
        }
    }
    return true;
}

vector <size_t> make_histogram (const vector<double>& numbers, size_t kol_kor)
{
    vector<size_t>B(kol_kor);
    size_t max_count;
    double maxp, minp;
    find_minmax(numbers, minp, maxp);
    double step = (maxp-minp)/(kol_kor);

    for (size_t i=0; i<numbers.size(); i++)
    {
        for (size_t j=0; j<kol_kor; j++)
        {
            if ((numbers[i]>=(minp+j*step))&&(numbers[i]<(minp+(j+1)*step)))
            {
                B[j]++;
                break;
            }
        }
    }

    for (size_t i=0; i<numbers.size(); i++)
    {
        if (numbers[i]== maxp)
            B[kol_kor-1]++;
    }
    return B;
}