#include #include #include using namespace std; int main() { const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; double maxx, minn, MaxCount = 0; size_t NumberCount, BinCount; cerr << "Enter number count: "; cin >> NumberCount; cerr << "Enter bin count: "; cin >> BinCount; vector Numbers(NumberCount); for (int i = 0; i < NumberCount; i++) { cin >> Numbers[i]; } vector Bins(BinCount); maxx = Numbers[0]; minn = Numbers[0]; for (auto x : Numbers) { if (x > maxx) { maxx = x; } if (x < minn) { minn = x; } } double BinSize = (maxx - minn) / BinCount; for (size_t i = 0; i < NumberCount; i++) { bool found = false; for (size_t j = 0; (j < BinCount - 1) && !found; j++) { auto lo = minn + j * BinSize; auto hi = minn + (j + 1) * BinSize; if ((lo <= Numbers[i]) && (Numbers[i] < hi)) { Bins[j]++; found = true; if (Bins[j] > MaxCount) { MaxCount = Bins[j]; } } } if (!found) { Bins[BinCount - 1]++; if (Bins[BinCount - 1] > MaxCount) { MaxCount = Bins[BinCount - 1]; } } } for (auto bin : Bins) { if (bin < 100) { cout << " "; } if (bin < 10) { cout << " "; } cout << bin << "|"; size_t height = MAX_ASTERISK * (static_cast(bin) / MaxCount); if (MaxCount <= 76) { for (int i = 0; i < bin; i++) { cout << '*'; } } else { for (int i = 0; i < height; i++) { cout << '*'; } } cout << endl; } return 0; }