diff --git a/LABA1.cpp b/LABA1.cpp index 8153d1b..c0de306 100644 --- a/LABA1.cpp +++ b/LABA1.cpp @@ -33,24 +33,31 @@ void FindMinMax(const vector& marks, double & min, double & max) { } }; -int main() -{ - Input in = input_data(); - int VecSize = size(in.marks); - double interval = 0, inp = 0, i = 0, min = 0, max = 0, scale = 1; - vector chart(in.NCharts); - FindMinMax(in.marks, min, max); - interval = (max - min) / in.NCharts; - for (int x : in.marks) { +vector MakeHistogram(const vector& marks, int NCharts) { + double interval = 0, i = 0, min = 0, max = 0; + vector chart(NCharts); + FindMinMax(marks, min, max); + interval = (max - min) / NCharts; + for (int x : marks) { i = 0; while ((x > min + interval * (i + 1))) { i += 1; } chart[i] += 1; } - max = *max_element(begin(chart), end(chart)); - if ((max+4) > 80) { - scale = (max+4) / 80; + return chart; +}; + +int main() +{ + const int shift = 4, maxlen = 80; + Input in = input_data(); + int VecSize = size(in.marks); + double interval = 0, inp = 0, i = 0, min = 0, max = 0, scale = 1; + vector chart = MakeHistogram(in.marks, in.NCharts); + FindMinMax(chart, min, max); + if ((max+shift) > maxlen) { + scale = (max+shift) / maxlen; } for (i = 0; i < in.NCharts; i++) { if (chart[i] < 10) {