diff --git a/sem2_lab1/sem2_lab1.cpp b/sem2_lab1/sem2_lab1.cpp
index 0425f17..00e875c 100644
--- a/sem2_lab1/sem2_lab1.cpp
+++ b/sem2_lab1/sem2_lab1.cpp
@@ -7,24 +7,28 @@
 #define PREFIX 4
 using namespace std;
 
-int main()
+struct Input {
+    vector<double> numbers;
+    size_t bin_count{};
+};
+Input input_data()
 {
+    Input in;
     int number_count;
-    int bin_count;
-    //Ввод данных
     cerr << "Enter number count: ";
     cin >> number_count;
     cerr << "Enter bin count: ";
-    cin >> bin_count;
-    vector<double> numbers(number_count);
-    vector<int> bins(bin_count); 
-    for (int i = 0; i < number_count; i++)
-    {
-        cin >> numbers[i];
+    cin >> in.bin_count;
+    in.numbers.resize(number_count);
+    for (size_t i = 0; i < number_count; i++) {
+        cin >> in.numbers[i];
     }
-    //Находим минимальное и максимальное значение
-    double min = numbers[0];
-    double max = numbers[0];
+    return in;
+}
+
+void find_minmax(const vector<double>& numbers, double& min, double& max) {
+    min = numbers[0];
+    max = numbers[0];
     for (double x : numbers)
     {
         if (x < min)
@@ -36,7 +40,14 @@ int main()
             max = x;
         }
     }
-    //Вычисляем гистограмму
+}
+vector<double> make_histogram(const vector<double>& numbers, size_t bin_count)
+{
+    vector <double> bins;
+    double min, max;
+    find_minmax(numbers, min, max);
+    int number_count = numbers.size();
+    bins.resize(bin_count);
     double bin_size = (max - min) / bin_count;
     for (int i = 0; i < number_count; i++)
     {
@@ -57,9 +68,14 @@ int main()
             bins[bin_count - 1]++;
         }
     }
+    return bins;
+}
+
+void show_histogram_text(const vector<double>& bins)
+{
     //Находим максимум значений корзин
     int max_count = bins[0];
-    for (int x : bins) 
+    for (int x : bins)
     {
         if (x > max_count) max_count = x;
     }
@@ -73,13 +89,14 @@ int main()
     {
         K = 1;
     }
-    //K = 0; // принудительное отключение масштабирования для 1 и 2
+
     //Строим гистограмму
     int cnt;
-    for (int i = 0; i < bin_count; i++)
+    int bin_sz = bins.size();
+    for (int i = 0; i < bin_sz; i++)
     {
         cout.width(3);
-        cout.fill(' '); 
+        cout.fill(' ');
         cout << bins[i] << "|";
         if (K == 0)
             cnt = bins[i];
@@ -94,6 +111,15 @@ int main()
 }
 
 
+int main()
+{
+    auto in = input_data();
+    auto bins = make_histogram(in.numbers, in.bin_count);
+    show_histogram_text(bins);
+    return 0;
+}
+
+
 // Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
 // Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
 
diff --git a/sem2_lab1/sem2_lab1.vcxproj b/sem2_lab1/sem2_lab1.vcxproj
index 4c7be1c..a9d3d9a 100644
--- a/sem2_lab1/sem2_lab1.vcxproj
+++ b/sem2_lab1/sem2_lab1.vcxproj
@@ -129,6 +129,9 @@
   <ItemGroup>
     <ClCompile Include="sem2_lab1.cpp" />
   </ItemGroup>
+  <ItemGroup>
+    <None Include=".gitignore" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
diff --git a/sem2_lab1/sem2_lab1.vcxproj.filters b/sem2_lab1/sem2_lab1.vcxproj.filters
index b1c8a99..b60e906 100644
--- a/sem2_lab1/sem2_lab1.vcxproj.filters
+++ b/sem2_lab1/sem2_lab1.vcxproj.filters
@@ -19,4 +19,7 @@
       <Filter>Исходные файлы</Filter>
     </ClCompile>
   </ItemGroup>
+  <ItemGroup>
+    <None Include=".gitignore" />
+  </ItemGroup>
 </Project>
\ No newline at end of file