diff --git a/main.cpp b/main.cpp
index d263508..8762af1 100644
--- a/main.cpp
+++ b/main.cpp
@@ -3,47 +3,67 @@
 
 using namespace std;
 
-int main() {
+struct Input {
+    vector<double> numbers;
+    size_t bin_count{};
+};
 
+Input
+input_data() {
     size_t number_count, bin_count;
-    double min, max, bin_size;
+    double minl, maxl, bin_size;
 
 
     cerr << "Enter the number of elements: ";
     cin >> number_count;
 
+    Input in;
+    in.numbers.resize(number_count);
+
     vector<double> numbers(number_count);
 
     cerr << "\nEnter " << number_count << " elements:" << endl;
     for (size_t i = 0; i < number_count; i++) {
-        cin >> numbers[i];
+        cin >> in.numbers[i];
     }
 
 
     cerr << "Enter the number of bins: ";
-    cin >> bin_count;
+    cin >> in.bin_count;
+
+    return in;
+}
+
+void
+find_minmax(const vector<double>& numbers, double& minl, double& maxl) {
+    minl = numbers[0];
+    maxl = numbers[0];
 
-    min = numbers[0];
-    max = numbers[0];
     for (double x : numbers) {
-        if (x < min) {
-            min = x;
+        if (x < minl) {
+            minl = x;
         } else {
-            if (x > max) {
-                max = x;
+            if (x > maxl) {
+                maxl = x;
             }
         }
     }
+}
+
+vector<size_t>
+make_histogram(const vector<double>& numbers, size_t& bin_count) {
+    double minn, maxn;
+    find_minmax(numbers, minn, maxn);
 
-    bin_size = (max - min) / bin_count;
+    double bin_size = (maxn - minn) / bin_count;
 
     vector<size_t> bins(bin_count, 0);
 
-    for (size_t i = 0; i < number_count; i++) {
+    for (size_t i = 0; i < numbers.size(); 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;
+            auto lo = minn + j * bin_size;
+            auto hi = minn + (j + 1) * bin_size;
             if ((numbers[i] >= lo) && (numbers[i] <= hi)) {
                 bins[j]++;
                 found = true;
@@ -53,7 +73,11 @@ int main() {
             bins[bin_count - 1]++;
         }
     }
+    return bins;
+}
 
+void
+show_histogram_text(const vector<size_t> bins, size_t bin_count) {
     size_t max_count = bins[0];
     for (size_t i = 1; i < bin_count; i++) {
         if (bins[i] > max_count) {
@@ -123,6 +147,13 @@ int main() {
             cout << "\n";
         }
     }
+}
+
+int main() {
+
+    auto in = input_data();
+    auto bins = make_histogram(in.numbers, in.bin_count);
+    show_histogram_text(bins, in.bin_count);
 
     return 0;
 }