Если i и j стоят ДО мин числа – вывести их в mas[i]

Элементы в двумерном массиве(arr) которые расположены ДО минимального числа (int min = int.MaxValue;) – нужно переписать в отдельный одномерный массив (mas) и сортировать по возростанию чисел. У меня mas[i] выводится с кучей нулей .

    using System;
    using static System.Console;
    using static System.Array;
    
    namespace ConsoleApp4
    {
        class Program
        {
            
            static void z3(int[,] arr)
            {
                int min = int.MaxValue;
                int m_i = 0, m_j = 0;
                int [] mas = new int [100];
                for (int i = 0; i < arr.GetLength(0); i++)
                {
                    for (int j = 0; j < arr.GetLength(1); j++)
                    {
       
                        if (arr[i, j] < min)
                        {
                            min = arr[i, j];
                            m_i = i;
                            m_j = j;
                        } 
                    }
                }
                WriteLine("min = " + min + "\n m_i = " + m_i + "\n m_j = " + m_j);
                int k = 0;
                for (int i = 0; i < arr.GetLength(0); i++)
                {
                    for (int j = 0; j < arr.GetLength(1); j++)
                    {
                        if (i == m_i && j == m_j)
                        {
                            break;
                        }
                        else
                        {
                            mas[k] = arr[i, j];
                            k++;
                        }
                    
                    }
                }
                WriteLine();
                WriteLine();
                WriteLine();
                for (int i1 = 0; i1 < mas.Length; i1++)
                {
                    Write(mas[i1] + "\t"); 
                }
                WriteLine();
    
                Sort(mas);
                for (int i1 = 0; i1 < mas.Length; i1++)
                {
                    Write(mas[i1] + "\t");
                }
                WriteLine();
            }
    
    
    
            static void Main(string[] args)
            {
                Write("Введите ширину массива: ");
                int M = int.Parse(ReadLine());
                Write("Введите длинну массива: ");
                int N = int.Parse(ReadLine());
                Write("Введите диапазон массива: ");
                Write("\n\tВведите минимальное число: ");
                int A = int.Parse(ReadLine());
                Write("\n\tВведите максимальное число: ");
                int B = int.Parse(ReadLine());
                
                int[,] arr = new int[M, N];
                
                Random a = new Random();
                
                for (int i = 0; i < arr.GetLength(0); i++)
                {
                    for (int j = 0; j < arr.GetLength(1); j++)
                    {
                        arr[i,j] = a.Next(A, B);
                    }
                }
                
                for (int i = 0; i < arr.GetLength(0); i++)
                {
                    for (int j = 0; j < arr.GetLength(1); j++)
                    {
                        Write("\t" + arr[i,j]);
                    }
                    WriteLine();
                }
                
    z3(arr);
    
    
    
            }
        }
    }


Ответы (1 шт):

Автор решения: Igor
int[] mas = new int[arr.GetLength(1) * m_i + m_j];
for (int i = 0; i <= m_i; i++)
{
  for (int j = 0; j < arr.GetLength(1); j++)
  {
    if (i == m_i && j == m_j)
      break;
    ...
→ Ссылка