diff --git a/main.cpp b/main.cpp index 12effff..b29e26c 100644 --- a/main.cpp +++ b/main.cpp @@ -3,7 +3,8 @@ using namespace std; -struct Input { +struct +Input { vector numbers; size_t bin_count{}; }; @@ -18,17 +19,14 @@ input_data(){ cin >> in.numbers[i]; } size_t bin_count; - cin >> bin_count; + cin >> in.bin_count; return in; } -int main() -{ - Input in = input_data(); - - - double min = numbers[0]; - double max = numbers[0]; +void +find_minmax(const std::vector &numbers, double &min, double &max){ + min = numbers[0]; + max = numbers[0]; for (double x : numbers) { if (x < min) @@ -40,15 +38,38 @@ int main() max = x; } } - double bin_size = (max - min) / bin_count; - for (size_t i = 0; i < number_count; i++) + +} + +int +main() +{ + + const size_t SCREEN_WIDTH = 80; + const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; + Input in = input_data(); + vector bins(in.bin_count); + + + double min; + double max; + find_minmax(in.numbers, min, max); + + size_t max_count; + for (int i =0; imax_count){ + max_count=in.numbers[i]; + } + } + double bin_size = (max - min) / in.bin_count; + for (size_t i = 0; i < in.numbers.size(); i++) { bool found = false; - for (size_t j = 0; (j < bin_count - 1) && !found; j++) + for (size_t j = 0; (j < in.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)) + if ((lo <= in.numbers[i]) && (in.numbers[i] < hi)) { bins[j]++; found = true; @@ -57,11 +78,11 @@ int main() } if (!found) { - bins[bin_count - 1]++; + bins[in.bin_count - 1]++; } } - for (int i =0; imax_count){ max_count=bins[i]; } @@ -70,25 +91,25 @@ int main() //*cout<MAX_ASTERISK){ - for (int i=0; i(bins[i]) / max_count); if (bins[i]<10){ cout<<" "<