Member 14835962 Ответов: 1

Может ли кто-нибудь помочь мне с этим , он не проходит через массив[0, 0]


int[,] textArray = new int[8, 8];
        int[,] resultArray = new int[8, 8];
        int[,] tArray = new int[8, 8];

        textArray[0, 0] = Convert.ToInt32(textBox00.Text);
        textArray[0, 1] = Convert.ToInt32(textBox01.Text);
        textArray[0, 2] = Convert.ToInt32(textBox02.Text);
        textArray[0, 3] = Convert.ToInt32(textBox03.Text);
        textArray[0, 4] = Convert.ToInt32(textBox04.Text);
        textArray[0, 5] = Convert.ToInt32(textBox05.Text);
        textArray[0, 6] = Convert.ToInt32(textBox06.Text);
        textArray[0, 7] = Convert.ToInt32(textBox07.Text);
        textArray[1, 0] = Convert.ToInt32(textBox10.Text);
        textArray[1, 1] = Convert.ToInt32(textBox11.Text);
        textArray[1, 2] = Convert.ToInt32(textBox12.Text);
        textArray[1, 3] = Convert.ToInt32(textBox13.Text);
        textArray[1, 4] = Convert.ToInt32(textBox14.Text);
        textArray[1, 5] = Convert.ToInt32(textBox15.Text);
        textArray[1, 6] = Convert.ToInt32(textBox16.Text);
        textArray[1, 7] = Convert.ToInt32(textBox17.Text);
        textArray[2, 0] = Convert.ToInt32(textBox20.Text);
        textArray[2, 1] = Convert.ToInt32(textBox21.Text);
        textArray[2, 2] = Convert.ToInt32(textBox22.Text);
        textArray[2, 3] = Convert.ToInt32(textBox23.Text);
        textArray[2, 4] = Convert.ToInt32(textBox24.Text);
        textArray[2, 5] = Convert.ToInt32(textBox25.Text);
        textArray[2, 6] = Convert.ToInt32(textBox26.Text);
        textArray[2, 7] = Convert.ToInt32(textBox27.Text);
        textArray[3, 0] = Convert.ToInt32(textBox30.Text);
        textArray[3, 1] = Convert.ToInt32(textBox31.Text);
        textArray[3, 2] = Convert.ToInt32(textBox32.Text);
        textArray[3, 3] = Convert.ToInt32(textBox33.Text);
        textArray[3, 4] = Convert.ToInt32(textBox34.Text);
        textArray[3, 5] = Convert.ToInt32(textBox35.Text);
        textArray[3, 6] = Convert.ToInt32(textBox36.Text);
        textArray[3, 7] = Convert.ToInt32(textBox37.Text);
        textArray[4, 0] = Convert.ToInt32(textBox40.Text);
        textArray[4, 1] = Convert.ToInt32(textBox41.Text);
        textArray[4, 2] = Convert.ToInt32(textBox42.Text);
        textArray[4, 3] = Convert.ToInt32(textBox43.Text);
        textArray[4, 4] = Convert.ToInt32(textBox44.Text);
        textArray[4, 5] = Convert.ToInt32(textBox45.Text);
        textArray[4, 6] = Convert.ToInt32(textBox46.Text);
        textArray[4, 7] = Convert.ToInt32(textBox47.Text);
        textArray[5, 0] = Convert.ToInt32(textBox50.Text);
        textArray[5, 1] = Convert.ToInt32(textBox51.Text);
        textArray[5, 2] = Convert.ToInt32(textBox52.Text);
        textArray[5, 3] = Convert.ToInt32(textBox53.Text);
        textArray[5, 4] = Convert.ToInt32(textBox54.Text);
        textArray[5, 5] = Convert.ToInt32(textBox55.Text);
        textArray[5, 6] = Convert.ToInt32(textBox56.Text);
        textArray[5, 7] = Convert.ToInt32(textBox57.Text);
        textArray[6, 0] = Convert.ToInt32(textBox60.Text);
        textArray[6, 1] = Convert.ToInt32(textBox61.Text);
        textArray[6, 2] = Convert.ToInt32(textBox62.Text);
        textArray[6, 3] = Convert.ToInt32(textBox63.Text);
        textArray[6, 4] = Convert.ToInt32(textBox64.Text);
        textArray[6, 5] = Convert.ToInt32(textBox65.Text);
        textArray[6, 6] = Convert.ToInt32(textBox66.Text);
        textArray[6, 7] = Convert.ToInt32(textBox67.Text);
        textArray[7, 0] = Convert.ToInt32(textBox70.Text);
        textArray[7, 1] = Convert.ToInt32(textBox71.Text);
        textArray[7, 2] = Convert.ToInt32(textBox72.Text);
        textArray[7, 3] = Convert.ToInt32(textBox73.Text);
        textArray[7, 4] = Convert.ToInt32(textBox74.Text);
        textArray[7, 5] = Convert.ToInt32(textBox75.Text);
        textArray[7, 6] = Convert.ToInt32(textBox76.Text);
        textArray[7, 7] = Convert.ToInt32(textBox77.Text);

        // ive tried with for (int i = 0; i < 7; i++) and it doesnt work as well ,it says out of rage
        for (int i = 1; i < 7; i++)
        {
            for (int j = 1; j < 7; j++)
            {

                    resultArray[i, j] = (textArray[i - 1, j - 1] + textArray[i - 1, j] + textArray[i, j - 1] + textArray[i, j] + textArray[i + 1, j] + textArray[i, j + 1] + textArray[i + 1, j + 1] + textArray[i + 1, j - 1] + textArray[i - 1, j + 1]) / 9;

            }

        }
        for (int i = 0; i < resultArray.GetLength(0); i++)
        {
            for (int j = 0; j < resultArray.GetLength(1); j++)
            {
                label8.Text += resultArray[i, j];
                label8.Text += " , ";


            }
            label8.Text += Environment.NewLine;
        }


Что я уже пробовал:

ивр попробовал , и он показывает, что находится вне зоны досягаемости

1 Ответов

Рейтинг:
1

OriginalGriff

Массивы в C# основаны на нуле: таким образом, массив будет иметь допустимые индексы, которые больше или равны 0 и меньше числа элементов.
Предполагая массив из трех элементов a[3], допустимыми индексами являются только a[0], a[1] и a[2].

Ваша защита цикла отлично подходит для семиэлементного массива:

for (int i = 0; i < 7; i++)
И даже для массива 7 х 7:
for (int i = 1; i < 7; i++)
{
    for (int j = 1; j < 7; j++)
    {
до тех пор, пока вы не попытаетесь использовать математику для значений индекса.
К сожалению, это так:
resultArray[i, j] = (textArray[i - 1, j - 1] + textArray[i - 1, j] + textArray[i, j - 1] + textArray[i, j] + textArray[i + 1, j] + textArray[i, j + 1] + textArray[i + 1, j + 1] + textArray[i + 1, j - 1] + textArray[i - 1, j + 1]) / 9
Операции "- 1" и "+ 1" перемещают индексы ниже нуля и выше 6 соответственно.

Вы должны думать о том, что именно вы пытаетесь сделать, и что должно произойти на "краях" - должно быть i - 1 оберните круг от i равным нулю, чтобы получить доступ к элементу 6, например?

Мы не можем исправить это для вас - мы понятия не имеем, какую проблему должен решить этот код!


Member 14835962

это средний фильтр с массивом(8x8) с использованием маски 3x3 .
и это убивает меня , когда я запускаю его со случайными числами-это решение, это все вокруг заполнено 0, потому что это не проверка :
например :
0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 0
0 1 2 3 4 5 6 0
0 1 2 3 4 5 6 0
0 1 2 3 4 5 6 0
0 1 2 3 4 5 6 0
0 1 2 3 4 5 6 0
0 0 0 0 0 0 0 0

OriginalGriff

Если вы окружили свои фактические данные нулями, то почему вы вообще непосредственно обрабатываете минимальные и максимальные индексы? Перейдите от 1 к длине - 2, и операции сложения и вычитания будут работать нормально ...