Индекс вне границ массива - 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; // То же самое.