commit d58263b6cf59828eb09b1e11de4b0cc719053a12 Author: KhodiukMR Date: Mon Apr 29 00:34:38 2024 +0300 code: Добавлен исходный код diff --git a/CommonVar.cpp b/CommonVar.cpp new file mode 100644 index 0000000..9bcb988 --- /dev/null +++ b/CommonVar.cpp @@ -0,0 +1,75 @@ +#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; +}