From 1c59a9d45ada9894b8eeba22b4701f6e99fae490 Mon Sep 17 00:00:00 2001
From: ShirokovIV lab03 <ShirokovIV@mpei.ru>
Date: Fri, 18 Apr 2025 23:56:19 +0300
Subject: [PATCH] find_minmax

---
 maincpp.cpp | 59 ++++++++++++++++++++++++++++++++---------------------
 1 file changed, 36 insertions(+), 23 deletions(-)

diff --git a/maincpp.cpp b/maincpp.cpp
index 5c1117a..a4a2a70 100644
--- a/maincpp.cpp
+++ b/maincpp.cpp
@@ -1,42 +1,55 @@
 #include <vector>
 #include <iostream>
 using namespace std;
-int main() {
-    size_t n;
-    int korz;
+struct Input {
+    vector<double> vec;
+    size_t korz{};
+};
+Input input_data()
+{
+    Input in;
+    size_t n, korz;
+
     cerr << "Number of elem ";
     cin >> n;
-    vector<float> vec(n);
-    for (size_t i = 0; i < vec.size(); i++) {
-        //cout << i + 1 << ".";
-        cin >> vec[i];
-    }
-    cerr << "Number of baskets ";
-    cin >> korz;
-    vector<size_t> bins(korz);
-    double mn = vec[0];
-    double mx = vec[0];
+    in.vec.resize(n);
+    for (size_t i = 0; i < n; i++)
+        cin >> in.vec[i];
+    cerr << "Enter bin count: ";
+    cin >> in.korz;
+    return in;
+}
+void find_minmax(vector<double> vec, double& min, double& max) {
+    min = vec[0];
+    max = vec[0];
     for (double x : vec) {
-        if (x < mn) {
-            mn = x;
+        if (x < min) {
+            min = x;
         }
-        else if (x > mx) {
-            mx = x;
+        else
+        {
+            max = x;
         }
     }
-    float bin_size = (mx - mn) / korz;
-    for (size_t i = 0; i < vec.size(); i++) {
+}
+int main() {
+    auto in = input_data();
+    vector<size_t> bins(in.korz);
+    double mn, mx;
+    find_minmax(in.vec, mn, mx);
+    float bin_size = (mx - mn) / in.korz;
+    for (size_t i = 0; i < in.vec.size(); i++) {
         bool fl = false;
-        for (size_t j = 0; (j < korz - 1) && !fl; j++) {
+        for (size_t j = 0; (j < in.korz - 1) && !fl; j++) {
             auto lo = mn + j * bin_size;
             auto hi = mn + (j + 1) * bin_size;
-            if ((lo <= vec[i]) && (vec[i] < hi)) {
+            if ((lo <= in.vec[i]) && (in.vec[i] < hi)) {
                 bins[j]++;
                 fl = true;
             }
         }
         if (!fl) {
-            bins[korz - 1]++;
+            bins[in.korz - 1]++;
 
         }
     }
@@ -119,4 +132,4 @@ int main() {
             cout << endl;
         }
     }
-}
+}
\ No newline at end of file