diff --git a/dozorova_alena_lab_6/.gitignore b/dozorova_alena_lab_6/.gitignore
new file mode 100644
index 0000000..0e58087
--- /dev/null
+++ b/dozorova_alena_lab_6/.gitignore
@@ -0,0 +1,12 @@
+
+/dozorova_alena_lab_2/.vs
+/dozorova_alena_lab_2/ConsoleApp1/.vs
+/dozorova_alena_lab_2/ConsoleApp1/bin
+/dozorova_alena_lab_2/ConsoleApp1/obj
+/dozorova_alena_lab_2/ConsoleApp1/Properties/PublishProfiles
+/dozorova_alena_lab_2/ConsoleApp2/.vs
+/dozorova_alena_lab_2/ConsoleApp2/bin
+/dozorova_alena_lab_2/ConsoleApp2/obj
+/dozorova_alena_lab_6/ConsoleApp1/.vs
+/dozorova_alena_lab_6/ConsoleApp1/bin
+/dozorova_alena_lab_6/ConsoleApp1/obj
diff --git a/dozorova_alena_lab_6/ConsoleApp1/ConsoleApp1.csproj b/dozorova_alena_lab_6/ConsoleApp1/ConsoleApp1.csproj
new file mode 100644
index 0000000..74abf5c
--- /dev/null
+++ b/dozorova_alena_lab_6/ConsoleApp1/ConsoleApp1.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net6.0
+ enable
+ enable
+
+
+
diff --git a/dozorova_alena_lab_6/ConsoleApp1/ConsoleApp1.sln b/dozorova_alena_lab_6/ConsoleApp1/ConsoleApp1.sln
new file mode 100644
index 0000000..5701d5a
--- /dev/null
+++ b/dozorova_alena_lab_6/ConsoleApp1/ConsoleApp1.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.35004.147
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp1", "ConsoleApp1.csproj", "{29269567-7466-4C99-BEEF-F5766BDDFB24}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {29269567-7466-4C99-BEEF-F5766BDDFB24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {29269567-7466-4C99-BEEF-F5766BDDFB24}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {29269567-7466-4C99-BEEF-F5766BDDFB24}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {29269567-7466-4C99-BEEF-F5766BDDFB24}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {EDED6E1D-0A86-43F9-94EA-6ADCC1FA1B42}
+ EndGlobalSection
+EndGlobal
diff --git a/dozorova_alena_lab_6/ConsoleApp1/Extention.cs b/dozorova_alena_lab_6/ConsoleApp1/Extention.cs
new file mode 100644
index 0000000..86e8b29
--- /dev/null
+++ b/dozorova_alena_lab_6/ConsoleApp1/Extention.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Numerics;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace ConsoleApp1
+{
+ public static class Extention
+ {
+ public static int[,] CreateMatrixWithoutColumn(this int[,] matrix, int column)
+ {
+ var result = new int[matrix.GetLength(0), matrix.GetLength(1) - 1];
+ for (int i = 0; i < matrix.GetLength(0); i++)
+ {
+ for (int j = 0; j < matrix.GetLength(1) - 1; j++)
+ {
+ result[i, j] = j < column ? matrix[i, j] : matrix[i, j + 1];
+ }
+ }
+ return result;
+ }
+
+ public static int[,] CreateMatrixWithoutRow(this int[,] matrix, int row)
+ {
+ var result = new int[matrix.GetLength(0) - 1, matrix.GetLength(1)];
+ for (int i = 0; i < matrix.GetLength(0) - 1; i++)
+ {
+ for (int j = 0; j < matrix.GetLength(1); j++)
+ {
+ result[i, j] = i < row ? matrix[i, j] : matrix[i + 1, j];
+ }
+ }
+
+ return result;
+ }
+
+ public static double CalculateDeterminant(this int[,] matrix)
+ {
+ if (matrix.GetLength(0) == 2)
+ {
+ return matrix[0, 0] * matrix[1, 1] - matrix[0, 1] * matrix[1, 0];
+ }
+ double result = 0;
+ for (var j = 0; j < matrix.GetLength(0); j++)
+ {
+ result += (j % 2 == 1 ? 1 : -1) * matrix[1, j] *
+ matrix.CreateMatrixWithoutColumn(j).CreateMatrixWithoutRow(1).CalculateDeterminant();
+ }
+ //Console.WriteLine("Ко мне пришли с размером " + matrix.GetLength(0));
+ return result;
+ }
+ }
+}
diff --git a/dozorova_alena_lab_6/ConsoleApp1/Program.cs b/dozorova_alena_lab_6/ConsoleApp1/Program.cs
new file mode 100644
index 0000000..b64687b
--- /dev/null
+++ b/dozorova_alena_lab_6/ConsoleApp1/Program.cs
@@ -0,0 +1,87 @@
+
+using ConsoleApp1;
+using System.Data.Common;
+using System.Diagnostics;
+internal class Program
+{
+ private static void Main(string[] args)
+ {
+ var value = new int[3] {100, 300, 500 };
+
+ foreach(var i in value)
+ {
+ var a = CreateMatrix(i, i);
+ var b = CreateMatrix(i, i);
+
+ List times = new() {};
+ Console.WriteLine("Для пяти потоков: ");
+ for (int j = 1; j <= 5; j++)
+ {
+ var sw = new Stopwatch();
+ sw.Start();
+
+ Calculate(a, j);
+
+ sw.Stop();
+ times.Add(sw.ElapsedTicks);
+ }
+ Console.WriteLine("Количество тиков для вычисления матрицы стороной "+i+": "+string.Join("\t", times));
+
+ Console.WriteLine("Для десяти потоков: ");
+ for (int j = 1; j <= 10; j++)
+ {
+ var sw = new Stopwatch();
+ sw.Start();
+
+ Calculate(a, j);
+
+ sw.Stop();
+ times.Add(sw.ElapsedTicks);
+ }
+ Console.WriteLine("Количество тиков для вычисления матрицы стороной " + i + ": " + string.Join("\t", times));
+
+ }
+ }
+
+ private static int[,] CreateMatrix(int x, int y)
+ {
+ var rnd = new Random();
+
+ var res = new int[y, x];
+
+ for (int i = 0; i < y; i++)
+ {
+ for (int j = 0; j < x; j++)
+ {
+ res[i, j] = rnd.Next(0, 100);
+ }
+ }
+ return res;
+ }
+
+ private static double Calculate(int[,] matrix, int maxTask)
+ {
+ double res = 0;
+
+ var semaphore = new SemaphoreSlim(maxTask, maxTask);
+
+ for (var j = 0; j < matrix.GetLength(0) - 1; j++)
+ {
+ _ = Task.Run(() =>
+ {
+ try
+ {
+ semaphore.Wait();
+ res += (j % 2 == 1 ? 1 : -1) * matrix[1, j] *
+ matrix.CreateMatrixWithoutColumn(j).
+ CreateMatrixWithoutRow(1).CalculateDeterminant();
+ }
+ finally { semaphore.Release(); }
+ });
+
+ }
+
+ semaphore.Wait(maxTask);
+ return res;
+ }
+}
\ No newline at end of file
diff --git a/dozorova_alena_lab_6/README.md b/dozorova_alena_lab_6/README.md
new file mode 100644
index 0000000..c72aff4
--- /dev/null
+++ b/dozorova_alena_lab_6/README.md
@@ -0,0 +1,18 @@
+# Лабораторная работа 6
+В рамках данной работы мы изучаем выигрыш при распаралелливании процесса вычисления определителя матрицы
+## Описание
+Для вычисления определителя мы используем следующую формулу:
+![alt text](image.png)
+где ![alt text](image-1.png) - определитель матрицы, полученной из исходной вырезанием 1 строки и j столбца.
+
+## Запуск
+По опыту прошлой лабораторной работы, в консольном приложении был реализован алгоритм вычисление детерминанта и запущено сравнение затраченного времени (в тиках) для 5 и 10 потоков.
+## Результаты
+Результаты:
+
+![Результат](image-2.png)
+
+Как мы видим, подтверждаются выводы прошлой лабораторной работы: для небольших матриц выигрыш несущественнен из-за затраты времени на работу с потоком, а для больших эта разница в скорости уже существенна
+
+## Видеодемонстрация
+Видеодемонстрация по [адресу](https://drive.google.com/file/d/1dOMaRcTRiPwhn2E4ok1WUOeh_dD9NyDQ/view?usp=sharing)
diff --git a/dozorova_alena_lab_6/image-1.png b/dozorova_alena_lab_6/image-1.png
new file mode 100644
index 0000000..64f1452
Binary files /dev/null and b/dozorova_alena_lab_6/image-1.png differ
diff --git a/dozorova_alena_lab_6/image-2.png b/dozorova_alena_lab_6/image-2.png
new file mode 100644
index 0000000..4593b4a
Binary files /dev/null and b/dozorova_alena_lab_6/image-2.png differ
diff --git a/dozorova_alena_lab_6/image.png b/dozorova_alena_lab_6/image.png
new file mode 100644
index 0000000..65f78f3
Binary files /dev/null and b/dozorova_alena_lab_6/image.png differ