#include #include #include using namespace std; struct Input { vectornumbers; size_t kol_kor{}; }; Input input_data() { size_t number_count; cerr<<"Marks: "; cin>>number_count; Input in; in.numbers.resize(number_count); for (size_t i=0; i>in.kol_kor; return in; } void find_minmax(const vector& numbers, double& minp, double& maxp) { minp = numbers[0]; for (auto i = 0; imaxp) { maxp = numbers[i]; } } } vector make_histogram (const vector& numbers, size_t kol_kor) { vectorB(kol_kor); size_t max_count; double maxp, minp; find_minmax(numbers, minp, maxp); double step = (maxp-minp)/(kol_kor); for (size_t i=0; i=(minp+j*step))&&(numbers[i]<(minp+(j+1)*step))) { B[j]++; break; } } } for (size_t i=0; iB, size_t kol_kor) { const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; for (size_t i=0; i MAX_ASTERISK) { count = B[i]; height = MAX_ASTERISK * (static_cast(count) / max_count); } else { height = B[i]; } for (j = 0; j < height; j++) { cout << "*"; } cout << endl; } } } int main() { Input in = input_data(); auto B = make_histogram(in.numbers, in.kol_kor); show_histogram (B, in.kol_kor); return 0; }