From ebe92e673cf9a856d47e10259bb7667eb1f4057e Mon Sep 17 00:00:00 2001 From: bob Date: Wed, 7 Jun 2023 15:00:09 +0300 Subject: [PATCH] ggggg --- main.cpp | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 main.cpp diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..519559c --- /dev/null +++ b/main.cpp @@ -0,0 +1,117 @@ +#include +#include + +using namespace std; + +const size_t SCREEN_WIDTH = 80; +const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1; + + +double findMin(vector values) +{ + double min; + min = values[0]; + for (size_t i = 1; i < values.size(); i++) + if (values[i] < min) + min = values[i]; + return min; +} + +double findMax(vector values) +{ + double max; + max = values[0]; + for (size_t i = 1; i < values.size(); i++) + if (values[i] > max) + max = values[i]; + return max; +} + +size_t findMax(vector values) +{ + size_t max; + max = values[0]; + for (size_t i = 1; i < values.size(); i++) + if (values[i] > max) + max = values[i]; + return max; +} + +vector GetCarts(vector values, size_t cartsCount) +{ + vector carts(cartsCount); + double min = findMin(values); + double max = findMax(values); + double step = (max - min) / cartsCount; + for (size_t i = 0; i < values.size(); i++) + { + bool found = false; + for (size_t j = 0; (j < cartsCount - 1) && !found; j++) + { + auto lo = min + j * step; + auto hi = min + (j + 1) * step; + if ((lo <= values[i]) && (values[i] < hi)) + { + carts[j]++; + found = true; + } + } + if (!found) + carts[cartsCount - 1]++; + } + return carts; +} + +vector inputValues() +{ + size_t valuesLen; + cin >> valuesLen; + vector values(valuesLen); + for (size_t i = 0; i < valuesLen; i++) + cin >> values[i]; + return values; +} + +size_t inputCartsCount() +{ + size_t cartsCount; + cin >> cartsCount; + return cartsCount; +} + +vector ScaleCart(vector carts, size_t max) +{ + if (max < MAX_ASTERISK) + max = MAX_ASTERISK; + vector cartsScales(carts.size()); + for (size_t i = 0; i < carts.size(); i++) + cartsScales[i] = MAX_ASTERISK * (static_cast(carts[i]) / max); + return cartsScales; +} + +void outputCarts(vector carts) +{ + size_t max = findMax(carts); + vector cartsScales = ScaleCart(carts, max); + for (size_t i = 0; i < carts.size(); i++) + { + if (carts[i] < 100) + cout << " "; + if (carts[i] < 10) + cout << " "; + cout << carts[i] << "|"; + for (size_t j = 0; j < cartsScales[i]; j++) + cout << "*"; + cout << endl; + } + +} + +int main() +{ + vector values = inputValues(); + size_t cartsCount = inputCartsCount(); + vector carts = GetCarts(values, cartsCount); + outputCarts(carts); +} +