diff --git a/main.cpp b/main.cpp index af9afc6..a373d1b 100644 --- a/main.cpp +++ b/main.cpp @@ -10,6 +10,7 @@ using namespace std; struct Input { vector numbers; size_t bin_count{}; + size_t number_count{}; }; @@ -29,15 +30,9 @@ cin >> in.bin_count; return in; } - -int main() -{ - - size_t max_count; - Input in = input_data(); - double min = numbers[0]; - double max = numbers[0]; - +void +find_minmax(const vector& numbers, double& min, double& max) { + min = numbers[0]; for (double x : numbers) { if (x < min) { min = x; @@ -46,13 +41,15 @@ int main() max = x; } } +} +vector make_histogram(const vector numbers, size_t bin_count){ vector bins(bin_count); - vector procent(bin_count); - + double max, min = 0; + find_minmax(numbers, min, max); double bin_size = (max - min) / bin_count; - for (size_t i = 0; i < number_count; i++) { + for (size_t i = 0; i < numbers.size(); i++) { bool found = false; for (size_t j = 0; (j < bin_count - 1) && !found; j++) { auto lo = min + j * bin_size; @@ -64,8 +61,14 @@ int main() } if (!found) { bins[bin_count - 1]++; + } } + return bins; +} + +vector make_histogram_proc(const vector numbers, size_t bin_count, vector bins){ + vector procent(bin_count); double sum = 0; for (size_t i = 0; i < bin_count; i++){ sum = sum + bins[i]; @@ -76,9 +79,12 @@ int main() ost = ost - procent[i]; } procent[bin_count-1]=ost; + return procent; +} +void show_histogram_text(vector bins, size_t bin_count, vector procent){ - max_count = 0; + size_t max_count = 0; for (size_t x: bins) { if (x > max_count) { max_count = x; @@ -125,5 +131,14 @@ int main() } } + +} + +int main() +{ + auto in = input_data(); + auto bins = make_histogram(in.numbers, in.bin_count); + auto procent = make_histogram_proc(in.numbers, in.bin_count, bins); + show_histogram_text(bins, in.bin_count, procent); return 0; }