#include #include using namespace std; int main() { const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; size_t max_count = 0; size_t max_count_bin; size_t number_count; cerr << "Enter number count: "; cin >> number_count; vector numbers(number_count); cerr << "Enter numbers: "; for (int i = 0; i < number_count; i++) { cin >> numbers[i]; } size_t bin_count; cerr << "Enter bin count: "; cin >> bin_count; vector bins(bin_count); double max = numbers[0]; double min = numbers[0]; for (double x : numbers) { if (x > max) max = x; if (x < min) min = x; } for (size_t i = 0; i < number_count; i++) { if (numbers[i] < min) min = numbers[i]; if (numbers[i] > max) max = numbers[i]; } double bin_size = ((max - min) / 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 = min + j * bin_size; auto hi = min + (j + 1) * bin_size; if ((lo <= numbers[i]) && (numbers[i] < hi)) { bins[j]++; found = true; } } if (!found) { bins[bin_count - 1]++; } for (size_t i = 0; i < bin_count; i++) { if (bins[i] > max_count) { max_count = bins[i]; max_count_bin = i; } } } vector bins_height(bin_count); if (max_count > MAX_ASTERISK) { for (size_t i = 0; i < bin_count; i++) { bins_height[i]= MAX_ASTERISK * (static_cast(bins[i]) / max_count); } } else { for (size_t i = 0; i < bin_count; i++) { bins_height[i] = bins[i]; } } for (size_t i = 0; i < bin_count; i++) { if (bins[i] < 100) { cout << " "; if (bins[i] < 10) { cout << " "; } } cout << bins[i] << "|"; for (size_t j = 0; j < bins_height[i]; j++) { cout << "*"; } cout << endl; } size_t histogram_height; cerr << "Enter the histogram height" << endl; cin >> histogram_height; size_t C = (histogram_height / bin_count); //индивидульный вариант номер 3: if (C >= 1) { for (size_t i = 0; i < bin_count; i++) { if (bins[i] < 100) { cout << " "; if (bins[i] < 10) { cout << " "; } } cout << bins[i]; cout << "|"; for (size_t j = 0; j < bins_height[i]; j++) { cout << "*"; } cout << endl; for (size_t g = 1; g < C; g++) { cout << " "; cout << "|"; for (size_t j = 0; j < bins_height[i]; j++) { cout << "*"; } cout << endl; } } } else { cout << "Histogram height is too small"; } return 0; }