From b05df353be50c7e5bbf25cab0af59cddc29d6fbf Mon Sep 17 00:00:00 2001
From: ShchipkovMY <ShchipkovMY@mpei.ru>
Date: Sat, 9 Sep 2023 13:03:03 +0300
Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8?=
 =?UTF-8?q?=D1=82=D0=B8=D0=BB=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B8?=
 =?UTF-8?q?=D1=81=D1=85=D0=BE=D0=B4=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BE?=
 =?UTF-8?q?=D0=B4=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 lab_1.cbp |  40 +++++++++++++++++++++
 main.cpp  | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 146 insertions(+)
 create mode 100644 lab_1.cbp
 create mode 100644 main.cpp

diff --git a/lab_1.cbp b/lab_1.cbp
new file mode 100644
index 0000000..d7c31ba
--- /dev/null
+++ b/lab_1.cbp
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="6" />
+	<Project>
+		<Option title="lab_1" />
+		<Option pch_mode="2" />
+		<Option compiler="gcc" />
+		<Build>
+			<Target title="Debug">
+				<Option output="bin/Debug/lab_1" prefix_auto="1" extension_auto="1" />
+				<Option object_output="obj/Debug/" />
+				<Option type="1" />
+				<Option compiler="gcc" />
+				<Compiler>
+					<Add option="-g" />
+				</Compiler>
+			</Target>
+			<Target title="Release">
+				<Option output="bin/Release/lab_1" prefix_auto="1" extension_auto="1" />
+				<Option object_output="obj/Release/" />
+				<Option type="1" />
+				<Option compiler="gcc" />
+				<Compiler>
+					<Add option="-O2" />
+				</Compiler>
+				<Linker>
+					<Add option="-s" />
+				</Linker>
+			</Target>
+		</Build>
+		<Compiler>
+			<Add option="-Wall" />
+			<Add option="-fexceptions" />
+		</Compiler>
+		<Unit filename="main.cpp" />
+		<Extensions>
+			<lib_finder disable_auto="1" />
+		</Extensions>
+	</Project>
+</CodeBlocks_project_file>
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..2c3f59f
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,106 @@
+#include <iostream>
+#include <vector>
+#include <conio.h>
+
+using namespace std;
+
+int main()
+{
+    int i, j;
+    size_t number_count;
+    const size_t screen_width = 80;
+    const size_t max_asterisk = screen_width - 3 - 1;
+
+    cerr << "Enter number count : ";
+    cin >> number_count;
+    vector <double> numbers(number_count);
+    cerr << "Enter numbers : " << endl;
+    for (i = 0; i < number_count; i++)
+    {
+        cin >> numbers[i];
+    }
+    size_t bin_count;
+    cerr << "Enter bin count : ";
+    cin >> bin_count;
+    vector <size_t> bins(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;
+        }
+    }
+
+    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 ((lo <= numbers[i]) && (numbers[i] < hi))
+            {
+                bins[j] ++;
+                found = true;
+            }
+        }
+        if (!found)
+        {
+            bins[bin_count - 1]++;
+        }
+    }
+
+    double max_count;
+    max_count = bins[0];
+    for (i=0; i< bin_count; i++)
+    {
+        if (max_count<bins[i])
+        {
+            max_count=bins[i];
+        }
+    }
+
+    size_t height;
+    bool flag = false;
+    if(max_count>max_asterisk)
+    {
+        flag=true;
+    }
+    for (j = 0; j < bin_count; j++)
+    {
+        if (bins[j] < 100)
+        {
+            cout << " ";
+        }
+        if (bins[j] < 10)
+        {
+            cout << " ";
+        }
+        cout << bins[j] << "|";
+
+        if (flag)
+        {
+            height = max_asterisk * (static_cast<double>(bins[j]) / max_count);
+        }
+        else
+        {
+            height=bins[j];
+        }
+        for (i = 0; i < height; i++)
+        {
+            cout << "*";
+        }
+        cout << endl;
+    }
+    _getch();
+    return 0;
+}