Индекс вне границ массива - C# (189450)
Формулировка задачи:
Здравствуйте!
Столкнулся с проблемой, не могу понять где у меня ошибка.
Компилятор говорит индекс вне границ массива.
По моим расчетам все должно работать, но нет )
// Здесь реализована часть алгоритма Хакими public static void Low_potencial(int[,] before, int[,] after) // в функцию я подал 2 двумерных массива {//один до сортировки алгоритмом Дейкстры и один после int size = (int)Math.Sqrt(before.Length);//тут нахожу размерность массива int k = 0; // iterator для определения размерности вспомогательного массива для алгоритма int max = 0; for (int i = 0; i < size; i++) { for (int j = i + 1; j < size; j++) { if (before[i, j] != 8888) k++; } } int[,] Gamma = new int[3, k];// массив промежуточных данных в Хакими for (int i = 0; i < size; i++) for (int j = i + 1; j < size; j++) if (before[i, j] != 8888) { Gamma[0, k] = i + 1;// Здесь компилятор ругается, что не так ? Gamma[1, k] = j + 1; for (int q = 0; q < size; q++) { if (after[i, q] < after[j, q]) { if (max < after[i, k]) max = after[i, k]; } else if (max < after[j, k]) max = after[j, k]; } } Gamma[2, k] = max; for (int i = 0; i < k; i++) { for (int j = 0; j < 3; j++) { Console.Write(Gamma[i,j]); } Console.WriteLine(); } } static void Main(string[] args) { int MAX = 8888; int[,] before = { {0,2,3,1}, {2,0,0,1}, {5,6,0,8}, {1,2,0,0}}; int size = (int)Math.Sqrt(before.Length); for (int i = 0; i < size; i++) { for (int j = i; j < size; j++) if (before[i, j] == 0 && i != j) before[i, j] = MAX; } int[,] after = { {0,2,1,1}, {2,0,1,1}, {1,1,0,2}, {1,1,2,0}}; //High_potencial(after); Low_potencial(before, after); } } }
Решение задачи: «Индекс вне границ массива»
textual
Листинг программы
int k = 10; int[] Gamma = new int[k]; Gamma[k] = 12; // То же самое.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д