commit b9e1b344e2a66399c6531c055262736f5de08303
Author: lab-03 (OlisovEA) <OlisovYA@mpei.ru>
Date:   Sat Apr 19 10:00:15 2025 +0300

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

diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..fa032a1
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,74 @@
+#include <iostream>
+#include <vector>
+
+
+using namespace std;
+
+int main()
+{
+    const size_t SCREEN_WIDTH = 80;
+    const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
+
+
+    int number_count, bucket;
+
+    cout << "Enter number count: "; cin >> number_count;
+    cout << "Enter bucket: "; cin >> bucket;
+
+    vector <double> numbers(number_count);
+    for (int i = 0; i < number_count; i++) cin >> numbers[i];
+
+    float min = numbers[0];
+    float max = numbers[0];
+
+    for (float x : numbers)
+    {
+        if (x < min) min = x;
+        else if (x > max) max = x;
+    }
+
+    float k = (max-min)/bucket;
+
+    vector <int> stolb(bucket);
+
+    for (int j = 0; j < bucket; j++) stolb[j] = 0;
+
+    for (int i = 0; i < number_count; i++)
+    {
+        bool flag = false;
+        for (int j = 0; (j < bucket && !flag); j++)
+        {
+            if (numbers[i] >= (min+k*j) && numbers[i] < (min+k*(1+j)))
+            {
+                stolb[j]++;
+                flag = true;
+
+            }
+        }
+        if (!flag) stolb[bucket-1]++;
+    }
+
+    int maxlen = 0;
+
+    for (int j = 0; j < bucket; j++)
+    {
+        if (maxlen<stolb[j]) maxlen = stolb[j];
+    }
+
+    for (int j = 0; j < bucket; j++)
+    {
+        if (stolb[j] < 100) cout << " ";
+        if (stolb[j] < 10) cout << " ";
+        cout << stolb[j] << "|";
+        size_t height = stolb[j];
+        if (maxlen > MAX_ASTERISK)
+        {
+            if (maxlen != stolb[j]) height = MAX_ASTERISK * (static_cast <float> (stolb[j])/maxlen);
+            else if (maxlen == stolb[j]) height = MAX_ASTERISK;
+        }
+        for (int i = 0; i < height; i++) cout << "*";
+        cout << "\n";
+    }
+
+    return 0;
+}