commit cb5d186fe7c37b1e706f30aaf7077c4602e613f2 Author: KovalenkoDM Date: Mon Apr 15 13:46:43 2024 +0300 Initial commit diff --git a/main_original.cpp b/main_original.cpp new file mode 100644 index 0000000..3719ded --- /dev/null +++ b/main_original.cpp @@ -0,0 +1,67 @@ + +#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; +} \ No newline at end of file