Как обнулить строку и столбец с найденным минимальным элементом в матрице?

    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();
}
→ Ссылка