Удалить Matrix.cs

This commit is contained in:
margarita-krasnova 2024-12-30 22:54:02 +04:00
parent efa72feb19
commit e5c93aa5f1

119
Matrix.cs
View File

@ -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;
}
}
}