#include #include using namespace std; int main() { const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; size_t number_count; cerr << "Enter number count: "; cin >> number_count; vector < float > numbers(number_count); for(size_t i = 0; i < number_count; i++){ cerr << "Enter number: "; cin >> numbers[i]; } size_t bin_count; cerr << "Enter counts of been: "; cin >> bin_count; vector < size_t > bins(bin_count); float max1 = numbers[0]; float min1 = numbers[0]; for (size_t i = 0; i < number_count; i++){ if (numbers[i] > max1){ max1 = numbers[i]; } if (numbers[i] < min1 ){ min1 = numbers[i]; } } float bin_size = (max1 - min1) / bin_count; for (size_t i = 0; i < number_count; i++){ bool found = false; for (size_t j = 0; (j < bin_count - 1 ) && !found; j++){ auto lo = min1 + j * bin_size; auto hi = min1 + (j + 1) * bin_size; if ( (lo <= numbers[i]) && (numbers[i] < hi) ){ bins[j]++; found = true; } } if (!found){ bins[bin_count - 1]++; } } int maxbin = 0; //определение максимальной кoрзины for (int j = 0; j < bin_count; j++){ if (bins[j] > maxbin){ maxbin = bins[j]; } } int flag = 0; if (maxbin > MAX_ASTERISK){ flag = 1; } for (size_t j = 0; j < bin_count; j++){ size_t height = 0; //выравнивание if (bins[j] < 100){ cout << " "; } if (bins[j] < 10){ cout << " "; } cout << bins [j]; cout << "|"; if (flag == 1){ height = MAX_ASTERISK * (static_cast(bins[j]) / maxbin); for (size_t k = 0; k < height; k++){ cout << "*"; } cout << endl; } if (flag == 0){ for (size_t n = 0; n < bins[j]; n++){ cout << "*"; } cout << endl; } } // VARIANT // float max_bin = bins[0]; // for (size_t j = 0; j < bin_count; j++){ // if (bins[j] > max_bin){ // max_bin = bins[j]; // } // } // // for (size_t i = 0; i < max_bin; i++){ // for (size_t j = 0; j < bin_count; j++){ // if(bins[j] > i){ // cout << "*"; // } // else{ // cout << ""; // } // } // cout << endl; // } return 0; }