diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..85477f4
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,95 @@
+#include <iostream>
+#include <conio.h>
+#include <vector>
+using namespace std;
+int main()
+{
+    const size_t SCREEN_WIDTH = 80;
+    const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
+    int i, j;
+    double num;
+    size_t number_count, bin_count;
+    cerr << "Enter number count: " << "\n";
+    cin >> number_count;
+    vector<double> numbers(number_count);
+    for (i = 0; i < number_count; i++)
+    {
+        cin >> num;
+        numbers[i] = num;
+    }
+    cerr << "Enter bin count: " << "\n";
+    cin >> bin_count;
+    vector<size_t> bins(bin_count);
+    for (i = 0; i < bin_count; i++)
+    {
+        bins[i] = 0;
+    }
+    double min_number = numbers[0];
+    double max_number = numbers[0];
+    for (double x : numbers)
+    {
+        if (x < min_number)
+        {
+            min_number = x;
+        }
+        else if (x > max_number)
+        {
+            max_number = x;
+        }
+    }
+    double bin_size = (max_number - min_number) / 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_number + j * bin_size;
+            auto hi = min_number + (j + 1) * bin_size;
+            if ((lo <= numbers[i]) && (numbers[i] < hi))
+            {
+                bins[j]++;
+                found = true;
+            }
+        }
+        if (!found)
+        {
+            bins[bin_count - 1]++;
+        }
+    }
+    size_t max_bin_capacity = bins[0];
+    for (size_t x : bins)
+    {
+        if (x > max_bin_capacity)
+        {
+            max_bin_capacity = x;
+        }
+    }
+    size_t height = 0;
+    for (i = 0; i < bin_count; i++)
+    {
+        if (bins[i] < 10)
+        {
+            cout << "  " << bins[i] << "|";
+        }
+        if ((bins[i] < 100) && (bins[i] > 9))
+        {
+            cout << " " << bins[i] << "|";
+        }
+        if (bins[i] >= 100)
+        {
+            cout <<  bins[i] << "|";
+        }
+        if (bins[i] > 76){
+        height = MAX_ASTERISK * (static_cast<double>(bins[i]) / max_bin_capacity);
+        }
+        if (bins[i] < 76) {
+            height = bins[i];
+        }
+        for (j = 0; j < height; j++)
+        {
+            cout << "*";
+        }
+        cout << "\n";
+    }
+    return 0;
+}