public void Process(out int[,] res, out int maxi) { int n = Mas.GetLength(0); double[] res1 = new double[n]; //массив для хранения информации о коэфицентах for (int i = 0; i < n; i++) { res1[i] = (double)K_a[i] / K_b[i]; } // Словарь с числами и их количеством Dictionary <double, int> repeats = new Dictionary <double, int>(); foreach (var numb in res1) { if (repeats.ContainsKey(numb)) { repeats[numb] += 1; } else { repeats[numb] = 1; } } int max = repeats.Values.Max();//максимальное количество повторяющихся значений double key = repeats.First(x => x.Value == max).Key; int[,] result = new int[max, 3]; int k = 0; for (int x = 0; x < n; x++) { if (((double)K_a[x] / K_b[x]) == key) { for (int j = 0; j < 3; j++) //заполнение массива { result[k, j] = Mas[x, j]; } k++; } } res = result; maxi = max; }