From 3927022c9b981f34507c90329a09d71b684fda75 Mon Sep 17 00:00:00 2001 From: KonovalovaAA Date: Mon, 10 Apr 2023 15:23:10 +0300 Subject: [PATCH] code: make histogram --- main.cpp | 94 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 71 insertions(+), 23 deletions(-) diff --git a/main.cpp b/main.cpp index b1e5af4..325357d 100644 --- a/main.cpp +++ b/main.cpp @@ -3,8 +3,9 @@ using namespace std; - void - find_minmax(vector numbers, double& min, double& max) { +void +find_minmax(const vector numbers, double& min, double& max) +{ min = numbers[0]; max = numbers[0]; size_t number_count = numbers.size(); @@ -20,41 +21,88 @@ using namespace std; } } } - - - struct Input { + + + +struct Input +{ vector numbers; size_t bin_count{}; }; - Input - input_data() + + + + + +Input +input_data() { - size_t number_count; -cin >> number_count; - + size_t number_count; + cin >> number_count; -vector numbers(number_count); -for (size_t i = 0; i < number_count; i++) { - cin >> numbers[i]; -} -size_t bin_count; -cin >> bin_count; + vector numbers(number_count); + for (size_t i = 0; i < number_count; i++) + { + cin >> numbers[i]; + } + + size_t bin_count; + cin >> bin_count; -Input in; + Input in; in.numbers.resize(number_count); - - for (size_t i = 0; i < number_count; i++) { + + for (size_t i = 0; i < number_count; i++) + { cin >> in.numbers[i]; } - cin >> in.bin_count; - return in; + cin >> in.bin_count; + return in; } + + +vector +make_histogram(vector numbers, size_t bin_count) +{ + + double min, max; + vector bins(bin_count); + double bin_size = (max - min) / bin_count; + find_minmax(numbers, min, max); + size_t number_count = numbers.size(); + + for (size_t i = 0; i < number_count; i++) + { + bool found = false; + for (size_t j = 0; (j < bin_count - 1) && !found; j++) + { + auto lo = min + j * bin_size; + auto hi = min + (j + 1) * bin_size; + if ((lo <= numbers[i]) && (numbers[i] < hi)) + { + bins[j]++; + found = true; + } + } + if (!found) + { + bins[bin_count - 1]++; + } + } +} + + + + + + int main() { - - Input in = input_data(); + auto in = input_data(); + auto bins = make_histogram(in.numbers, in.bin_count); + //show_histogram_text(bins, ...); }