Присвоение значения в двумерном массиве не работает - подмена индексов - PullRequest
0 голосов
/ 07 февраля 2019

В основном у меня есть двумерный массив, который выглядит следующим образом:

0 x x -1
x 0 x x
x x 0 x
-1 x x 0

При использовании двух циклов for (вложенных) с индексами 'i' и 'j' и если они равны друг другу, например, iи j = 2, тогда значение, помещенное в массив [i, j], будет равно 0.Если 'i' = array.Length - 1 и 'j' = 0 (или наоборот), то значение в массиве [i, j] будет равно -1.

То, что я пытаюсь сделать, это поместитьслучайные числа от 1 до 20 в местах, обозначенных «х».Я знаю, как это сделать, но я хочу, чтобы числа в «х» с другой стороны от «0» были равны.Например,

значение @ i = 2, j = 3 равно значению @ i = 3, j = 2.

Теперь я уже сделал это в предыдущей программе, выполнив:

array[j, i] = array[i, j]

Но по какой-то причине в этой новой программе это больше не работает, вообще.

Что не так?

Вот фактический код:

size = r.Next(4, 8);
        V = new int[size, size];

        for (int i = 0; i < size; i++)
        {
            s = "";
            for (int j = 0; j < size; j++)
            {
                if (i == j)
                {
                    V[i, j] = 0;
                }
                else if ((i == size - 1 && j == 0) || (i == 0 && j == size - 1))
                {
                    V[i, j] = -1;
                }
                else
                {
                    V[i, j] = r.Next(1, 20);
                }
                V[j, i] = V[i, j];

                s += "|" + V[i, j] + "|";
            }
            Console.WriteLine(s);
        }
        Console.Read();

1 Ответ

0 голосов
/ 07 февраля 2019

проблема с алгоритмом заключается в том, что его перезаписывают (дважды перезаписывают) нижнюю половину матрицы.попробуйте этот цикл вместо:

for (var i = 0; i < size; i++)
{
    s = "|";
    for (int j = 0; j < size; j++)
    {
        if (i == j)
        {
            V[i, j] = 0;
        }
        else if (i == size - 1 && j == 0 || i == 0 && j == size - 1)
        {
            V[i, j] = -1;
        }
        else if (i < j)
        {
            V[i, j] = r.Next(1, 20);
            V[j, i] = V[i, j];
        }
        s += $"{V[i, j],2}|";
    }
    Console.WriteLine(s);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...