diff --git a/main.cpp b/main.cpp index c9aff14..3e28734 100644 --- a/main.cpp +++ b/main.cpp @@ -15,31 +15,37 @@ Input input_data() Input in; in.numbers.resize(number_count); - for (int i = 0; i < number_count; i++) + for (size_t i = 0; i < number_count; i++) { cin >> in.numbers[i]; } - cerr << "Vvedite bin_count = "; + cerr << "Enter bin_count = "; cin >> in.bin_count; return in; } -int main() { - Input in = input_data(); - for (int i = 0; i < in.numbers.size(); i++) { - if (numbers[i] < minimum) - minimum = numbers[i]; - if (numbers[i] > maximum) - maximum = numbers[i]; +void find_minmax( const vector& numbers, double& minimum, double& maximum){ + minimum = numbers[0]; + maximum = numbers[1]; + for(double i: numbers){ + if (i < minimum) + minimum = i; + if (i > maximum) + maximum = i; } +} + vector make_histogram(const vector& numbers,size_t bin_count){ + double maximum, minimum; + float LL,LR; double bin_size = (maximum - minimum) / bin_count; + find_minmax(numbers,minimum,maximum); + vector bins(bin_count); LL = minimum; LR = minimum + bin_size; - for (int i = 0; i < bin_count; i++) { if (i == 0) { - for (int b = 0; b < number_count; b++) { + for (int b = 0; b < numbers.size(); b++) { if ((LL <= numbers[b]) && (numbers[b] < LR)) bins[i] += 1; @@ -49,14 +55,14 @@ int main() { } if (i == (bin_count - 1)) { LR = maximum; - for (int b = 0; b < number_count; b++) { + for (int b = 0; b < numbers.size(); b++) { if ((LL < numbers[b]) && (numbers[b] <= LR)) bins[i] += 1; } break; } if ((i != 0) && (i != (bin_count - 1))) { - for (int b = 0; b < number_count; b++) { + for (int b = 0; b < numbers.size(); b++) { if ((LL < numbers[b]) && (numbers[b] < LR)) bins[i] += 1; } @@ -64,6 +70,15 @@ int main() { LR = LL + bin_size; } } + return bins; +} + +int main() { + auto in = input_data(); + auto bins = make_histogram(in.numbers,in.bin_count); + + + const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;