diff --git a/Matrix.cs b/Matrix.cs deleted file mode 100644 index b7b25dc..0000000 --- a/Matrix.cs +++ /dev/null @@ -1,119 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Diagnostics; - -namespace rvip_5 -{ - public class Matrix - { - private readonly int[,] data; - public int Size { get; } - - public Matrix(int size) - { - Size = size; - data = new int[size, size]; - FillRandom(); - } - - public Matrix(int[,] data) - { - this.data = data; - Size = data.GetLength(0); - } - - public int GetElement(int row, int col) - { - return data[row, col]; - } - - public void SetElement(int row, int col, int value) - { - data[row, col] = value; - } - - private void FillRandom() - { - Random random = new Random(); - for (int i = 0; i < Size; i++) - { - for (int j = 0; j < Size; j++) - { - data[i, j] = random.Next(10); // Случайные числа от 0 до 9 - } - } - } - - public Matrix MultiplySequential(Matrix other) - { - if (Size != other.Size) - { - throw new ArgumentException("Матрицы должны быть одинакового размера."); - } - - int[,] resultData = new int[Size, Size]; - for (int i = 0; i < Size; i++) - { - for (int j = 0; j < Size; j++) - { - for (int k = 0; k < Size; k++) - { - resultData[i, j] += data[i, k] * other.data[k, j]; - } - } - } - return new Matrix(resultData); - } - - public Matrix MultiplyParallel(Matrix other, int numThreads) - { - if (Size != other.Size) - { - throw new ArgumentException("Матрицы должны быть одинакового размера."); - } - - int[,] resultData = new int[Size, Size]; - Task[] tasks = new Task[numThreads]; - int rowsPerThread = Size / numThreads; - - for (int i = 0; i < numThreads; i++) - { - int startRow = i * rowsPerThread; - int endRow = (i == numThreads - 1) ? Size : (i + 1) * rowsPerThread; - tasks[i] = Task.Run(() => - { - for (int row = startRow; row < endRow; row++) - { - for (int col = 0; col < Size; col++) - { - for (int k = 0; k < Size; k++) - { - resultData[row, col] += data[row, k] * other.data[k, col]; - } - } - } - }); - } - - Task.WaitAll(tasks); - return new Matrix(resultData); - } - - public override string ToString() - { - string result = ""; - for (int i = 0; i < Size; i++) - { - for (int j = 0; j < Size; j++) - { - result += data[i, j] + " "; - } - result += "\n"; - } - return result; - } - } -}