From cc807145be7d8557c0ba577853461a2c4f5ca97f Mon Sep 17 00:00:00 2001
From: OgarkovIA <ogarkovia@mpei.ru>
Date: Mon, 3 Jun 2024 07:15:30 +0000
Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?=
 =?UTF-8?q?=D0=BB(=D0=B0)=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20''?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 main.cpp | 211 ++++++++++++++++++++++++-------------------------------
 1 file changed, 92 insertions(+), 119 deletions(-)

diff --git a/main.cpp b/main.cpp
index 751e9bc..14048c9 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,119 +1,92 @@
-#include <iostream>
-#include <vector>
-
-const size_t SCREEN_WIDTH = 80;
-const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
-
-using namespace std;
-
-input_data()
-{
-    size_t number_count;
-    cin >> number_count;
-    vector<double> numbers(number_count);
-    for (size_t i = 0; i < number_count; i++) {
-    cin >> numbers[i];
-    }
-    size_t bin_count;
-    cin >> bin_count;
-}
-
-
-int main()
-{
-    Input in = input_data();
-
-
-
-
-
-    double min = numbers[0];
-    double max = numbers[0];
-
-    for (double x : numbers) {
-        if (x < min) {
-            min = x;
-        }
-        else if (x > max) {
-            max = x;
-        }
-    }
-
-    /*
-
-    for (size_t i = 0; i < number_count; i++) {
-
-    }
-
-
-    */
-
-    vector<size_t> bins(bin_count);
-    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++) { // ���� j-� �������
-            auto lo = min + j * bin_size; // ���������� ������� ������ �������
-            auto hi = min + (j + 1) * bin_size;
-            if ((lo <= numbers[i]) && (numbers[i] < hi)) { // ����������� ��� ��� ������� i-� ������� �� numbers
-                bins[j]++; // ���� ������� ��������� � ������ ��������� (��������), �� ����������� ������� j-�� �������
-                found = true; // ����������� "������", ����� ���������� ������� ������ � ������� � ����. ��. �� numbers
-            }                 // �� ���� ������ ������� ����������� � ������� � ��� ����� ���������� ��������� �������
-        }
-        if (!found) { // � ���� �� �� ���� ��. �� �����������, �� ��� ������, ��� �� �������� � ��������� ��������
-            bins[bin_count - 1]++; // ��������� ���� ��. � ��������� �������
-        }
-    }
-
-    // ������� ������������� ������� ����� �������� ������
-    max_count = 0;
-    for (size_t x: bins) {
-        if (x > max_count) {
-                max_count = x;
-        }
-    }
-
-    if (max_count > MAX_ASTERISK) {
-        for (size_t count: bins) {
-            size_t height = MAX_ASTERISK * (static_cast<double>(count) / max_count);
-            if (count < 10) {
-                cout << "  " << count << "|";
-            }
-            else if (count >= 100) {
-                cout << count << "|";
-            }
-
-            else {
-                cout << " " << count << "|";
-            }
-
-            for (size_t i = 0; i < height; i++) {
-                cout << "*";
-            }
-            cout << "\n";
-        }
-    }
-
-    else {
-        for (size_t x: bins) {
-            if (x < 10) {
-                cout << "  " << x << "|";
-            }
-            else if (x >= 100) {
-                cout << x << "|";
-            }
-
-            else {
-                cout << " " << x << "|";
-            }
-
-            for (size_t i = 0; i < x; i++) {
-                cout << "*";
-            }
-            cout << "\n";
-        }
-    }
-    return 0;
-}
-
+#include <iostream>
+#include <vector>
+using namespace std;
+const size_t SCREEN_WIDTH = 80;
+const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
+
+int main()
+{
+    size_t number_count;
+    cerr << "Enter number count: ";
+    cin >> number_count;
+
+    vector<double> numbers(number_count);
+    cerr << "Enter numbers: ";
+    for(size_t i = 0; i < number_count; i++){
+        cin >> numbers[i];
+    }
+
+    size_t bin_count;
+    cerr << "Enter bin count: ";
+    cin >> bin_count;
+
+    double min = numbers[0];
+    double max = numbers[0];
+    for (double x : numbers) {
+        if (x < min) {
+            min = x;
+        }
+        else if (x > max) {
+            max = x;
+        }
+    }
+    vector<size_t> bins(bin_count);
+    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 ( (numbers[i] >= lo) && (numbers[i] < hi) ) {
+                bins[j]++;
+                found = true;
+            }
+        }
+        if (!found) {
+            bins[bin_count-1]++;
+        }
+
+    }
+    size_t max_count = bins[0];
+    for(size_t x: bins){
+        if(x > max_count){
+            max_count = x;
+        }
+    }
+    if (max_count > MAX_ASTERISK){
+        for(size_t count: bins){
+            size_t height = MAX_ASTERISK * (static_cast<double>(count) /max_count);
+            if (count < 10){
+                cout << "  " << count << "|";
+            }
+            else if (count < 100){
+                cout << " " << count << "|";
+            }
+            else{
+                cout << count << "|";
+            }
+            for(size_t i = 0; i < height; i++){
+                cout << "*";
+            }
+            cout << "\n";
+        }
+    }
+    else{
+        for(double x : bins){
+            if (x < 10){
+                cout << "  " << x << "|";
+            }
+            else if (x < 100){
+                cout << " " << x << "|";
+            }
+            else{
+                cout << x << "|";
+            }
+            for(size_t i = 0; i < x; i++){
+                cout << "*";
+            }
+            cout << "\n";
+        }
+    }
+    return 0;
+}