#include #include #include using namespace std; struct Input { vector numbers; size_t bin_count{}; }; Input input_data() { size_t number_count; cerr << "Введите кол-во чисел в строке: "; cin >> number_count; Input in; in.numbers.resize(number_count); cerr << "Введите строку чисел: "; for (int i = 0; i < number_count; i++) { cin >> in.numbers[i]; } cerr << "Введите кол-во корзин: "; cin >> in.bin_count; return in; } void find_minmax(const vector& numbers, double& minimum, double& maximum) { minimum = numbers[0]; for (int i : numbers) { if (i < minimum) minimum = i; } maximum = numbers[0]; for (int i : numbers) { if (i > maximum) maximum = i; } } int main () { vector numbers; vector baskets; size_t numbers_count; size_t baskets_count; size_t baskets_max_count; const size_t screen_width = 80; const size_t max_asterisk = screen_width - 3 - 1; double basket_max; double basket_min; double basket_size; cout.precision(4); Input in = input_data(); // cerr << "Введите кол-во чисел в строке: "; // cin >> numbers_count; // numbers.resize(numbers_count); // // cerr << "Введите строку чисел: "; // for (float& i : numbers) { // cin >> i; // } // // cerr << "Введите кол-во корзин: "; // cin >> baskets_count; // //baskets.resize(baskets_count); // basket_max = numbers[0]; // for (int i : numbers) { // if (i > basket_max) basket_max = i; // } // basket_min = numbers[0]; // for (int i : numbers) { // if (i < basket_min) basket_min = i; // } find_minmax(in.numbers, basket_min, basket_max); basket_size = (basket_max - basket_min) / in.bin_count; for (int i = 0; i < in.bin_count; i++) { for (int j = 0; j < numbers_count; j++) { if ((numbers[j] >= (basket_min + i * basket_size) and numbers[j] < (basket_min + (i + 1) * basket_size)) or (i == in.bin_count - 1 and numbers[j] == basket_max)) { baskets[i]++; } } } baskets_max_count = baskets[0]; for (size_t i : baskets) { if (i > baskets_max_count) baskets_max_count = i; } for (int i = 0; i < baskets_count; i++) { size_t height = baskets[0]; if (baskets_max_count > max_asterisk) { height = max_asterisk * (static_cast(baskets[i]) / baskets_max_count); } cout << baskets[i] << "|"; for (int j = 0; j < height; j++) cout << "*"; cout << endl; } return 0; }