#include #include using namespace std; const size_t SCREEN_WIDTH = 80; const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; int main() { size_t numberCount, binCount, maxCount; double maxx, minn; cerr << "Enter number count: "; cin >> numberCount; vector numbers(numberCount); cerr << "Fill array \"numbers\"\n"; for (int i = 0; i < numberCount; i++) { cin >> numbers[i]; } maxx = numbers[0]; minn = numbers[0]; for (auto el: numbers) { if (el > maxx) { maxx = el; } if (el < minn) { minn = el; } } cerr << "Enter bin count: "; cin >> binCount; double binSize = (maxx - minn) / binCount; vector bins(binCount); maxCount = 0; 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 << " "; } size_t height = maxCount < MAX_ASTERISK? bin: MAX_ASTERISK * (static_cast(bin) / maxCount); cout << bin << "|" << string(height, '*'); cout << "\n"; } return 0; }