Неправильное заполнение datagridview из массива

193
29 марта 2018, 06:04

Есть такой код:

        int n = 6;
        char[,] matrix = new char[n, n];   
    void InsertText(char[,] matrix, string text, int n)
    {
        int temp = 0;     
        for (int diff = 1 - n; diff <= n - 1; diff++)
            for (int i = 0; i < n; i++)
            {
                int j = i - diff;
                if (j < 0 || j >= n)
                    continue;                    
                matrix[i, j] = text[temp];
                temp++;
            }
    }
    void EncryptMatrix(char[,] matrix)
    {
        for (int i = 0; i < matrix.GetLength(0); i++)
            for (int j = 0; j < matrix.GetLength(1); j++)
                dataGridView1.Rows[i].Cells[j].Value = matrix[i, j];
    }

Если string text = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ "; (в конце еще три пробела), то он записывает всё правильно, но если строку сократить, то выдает ошибку о том, что выходит за границу массива (text). Пытался сделать так, мол "если temp < text.length, то matrix[i, j] = text[temp], else matrix[i,j] = ' ';" но у меня так не получилось.

На картинке показано как должно выглядеть, при условии если не убирать пробелы в конце переменной text. Пожалуйста, помогите разобраться. Никак не могу понять что не так.

Answer 1

Просто прервите циклы с помощью break при условии если temp < text.length

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

READ ALSO
Как работать с числами с плавающей запятой в С#?

Как работать с числами с плавающей запятой в С#?

Есть вот такой код простого конвертера валют(SOM - это валюта Кыргызстана)

207
c# WebBrowser Как при открытии сайтов игнорировать x-frame-options:?

c# WebBrowser Как при открытии сайтов игнорировать x-frame-options:?

При открытии сайтов должны игнорироваться x-frame-options (запрет на открытие некоторых страниц в iframe, в браузерах решается установкой мини-плагина)

206
Проект крашится после установки

Проект крашится после установки

Проблема следующая: создан проект wpf (с использованием фреймов и страниц)В отладке все стабильно работает, но после установки запускается...

205
Проблема с FileStream [требует правки]

Проблема с FileStream [требует правки]

Добрый день, пытаюсь произвести сериализацию объекта на C# через FileStream, но почему то конструктор FileStream "ругается" на запись пути к файлуКод:

211