2014-02-19 5 views
1

Я работаю над проектом, и мне нужно рассчитать частотное распределение вектора int, который будет вводить пользователь. Распределение будет разделено на 10 диапазонов. Я просто не могу окутать голову, как правильно пройти вектор и отрегулировать минимальные и максимальные значения каждого интервала. Вот что я написал, что я знаю, это далеко (и, х это имя вектора:.Вычисление частотного распределения для вектора ints

double range = max - min; 
double interval = ceil(range/10); 
double frequency = 0.0; 
for (vector<int>::iterator it = x.begin(); it < x.end(); it++) 
{ 
    if (*it > min) 
    { 
     min = (min + interval); 
     min = *it; 
    } 
    if (*it < max) 
    { 
     max = min + interval; 
     max = *it; 
    } 
    if (*it >= min && *it <= max) 
     ++frequency;  
+0

что вы хотите сделать, просто создайте гистограмму. Каждый раз, когда значение, которое вы получаете, находится в определенном диапазоне, добавьте 1 в «ведро», которое содержит этот диапазон. Кроме того, вам нужно использовать вектор или вы можете уйти с помощью простого массива? Знаете ли вы max и min распределения раньше времени, или вам нужно рассчитать, что, пробегая вектор в первый раз? – trumpetlicks

+1

Для _go через вектор правильно_, измените 'it timrau

+0

@timrau спасибо. Я знал об окончании итераторов таким образом, что просто забыл ввести его! – Cartemis

ответ

0

Divide вектор в HashMap векторов Верните значения из исходного вектора в ведро набор и использование станд :: min_element, и станд :: max_element, чтобы найти наименьшее/наибольшее из каждого диапазона.

Я бы опубликовать псевдокод но я на своем телефоне.

Смежные вопросы