Как обнулить строку и столбец с найденным минимальным элементом в матрице?
namespace program
{
class Matrix
{
public int[,] array;
public Matrix(int n, int m)
{
array = new int[n, m];
FillMatrix();
}
public void FillMatrix()
{
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
array[i, j] = new Random().Next(0, 99);
}
}
ShowMatrix();
}
public void ShowMatrix()
{
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write($"{array[i, j]} \t");
}
Console.WriteLine();
}
Console.ReadLine();
}
public void SearchMin()
{
int min = array[0, 0];
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
if (array[i, j] < min)
{
min = array[i, j];
}
}
}
Console.WriteLine($"Value: {min}\n");
ShowMatrix();
}
class Program
{
static void Main()
{
Matrix matrix = new Matrix(5, 5);
matrix.SearchMin();
}
}
}
}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Просто сохраняйте вместе с минимальным значением его координаты, затем по этим координатам так же в цикле при совпадении координат обнуляйте элементы.
public void SearchMin()
{
int min = array[0, 0];
int x = -1, y = -1;
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
if (array[i, j] < min)
{
min = array[i, j];
x = i;
y = j;
}
}
}
Console.WriteLine($"Value: {min}\n");
ShowMatrix();
ResetCross(x, y);
}
public void ResetCross(int x, int y)
{
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
if (i == x || j == y)
array[i, j] = 0;
}
}
ShowMatrix();
}