commit 047cfc63224fc04d599389e23428f6234d318b1a
Author: Dmitry (KolomeytsevDA) <KolomeytsevDA@mpei.ru>
Date:   Sun May 5 19:28:42 2024 +0300

    code: исходный код

diff --git a/lab34.cpp b/lab34.cpp
new file mode 100644
index 0000000..e30a7cf
--- /dev/null
+++ b/lab34.cpp
@@ -0,0 +1,110 @@
+#include <iostream>
+#include <vector>
+
+const size_t SCREEN_WIDTH = 80;
+const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
+
+using namespace std;
+
+int main()
+{
+
+    size_t number_count, bin_count;
+
+    cerr << "Enter number count: ";
+    cin >> number_count;
+
+    cerr << "Enter numbers: ";
+
+    vector<double> numbers(number_count);
+
+    for (int i = 0; i < number_count; i++)
+    {
+        cin >> numbers[i];
+    }
+
+    cerr << "Enter bin count: ";
+    cin >> bin_count;
+
+    vector<double> bins(bin_count);
+    vector<int> count(number_count);
+    vector<double> height(bin_count);
+
+    int max_count = bins[0];
+    double min = numbers[0];
+    double max = numbers[0];
+    for (double x : numbers)
+    {
+
+        if (x < min)
+        {
+            min = x;
+        }
+
+        else if (x > max)
+        {
+            max = x;
+        }
+    }
+
+    double bin_size = (max - min) / bin_count;
+
+    for (size_t i = 0; i < number_count; i++)
+    {
+        bool found = false;
+        for (size_t j = 0; (j < bin_count - 1) && !found; j++)
+        {
+            auto lo = min + j * bin_size;
+            auto hi = min + (j + 1) * bin_size;
+
+            if ((lo <= numbers[i]) && (numbers[i] < hi))
+            {
+                bins[j]++;
+                count[j]++;
+                found = true;
+            }
+        }
+
+        if (!found )
+        {
+            bins[bin_count - 1]++;
+            count[bin_count - 1]++;
+        }
+    }
+    for (int i = 0; i < bin_count; i++)
+    {
+        if (bins[i] > max_count)
+        {
+            max_count = bins[i];
+        }
+    }
+
+    for (int i = 0; i < bin_count; i++)
+    {
+        height[i] = (MAX_ASTERISK * count[i]) / max_count;
+    }
+
+    for (int i = 0; i < bin_count; i++)
+    {
+
+        if (bins[i] < 100)
+        {
+            cout << " ";
+        }
+
+        if (bins[i] < 10)
+        {
+            cout << " ";
+        }
+
+        cout << bins[i] << "|";
+
+        for (int j = 0; j < height[i]; j++)
+        {
+            cout << "*";
+        }
+        cout << endl;
+    }
+
+    return 0;
+}
\ No newline at end of file