Перемещение колонн в левую сторону в массиве

я загорожен в проблеме, у меня есть массив и я хочу, чтобы первая линия осталась равной, но начиная со второй линии пробежалась стоимость в левую сторону,

Первоначальный массив

{{"d4","e0","b8","1e"},
 {"27","bf","b4","41"},
 {"11","98","5d","52"},
 {"ae","f1","e5","30"}}; 

Desplazamiento a la izquierda 

 {{"d4","e0", "b8", "1e"},
 {"bf", "b4", "41", "27"}, 
 {"5d", "52", "11", "98"},
 {"30", "ae", "f1", "e5"}};

поскольку он является первоначальным массивом и потом такой, как нужно видеть с перемещением стоимости в левую сторону

>

public static string[,] clave = new string[4, 4]{{"d4","e0","b8","1e"},
                                                      {"27","bf","b4","41"},
                                                      {"11","98","5d","52"},
                                                      {"ae","f1","e5","30"}};

    public static Int32[,] w = new Int32[4, 4];
   // Int32 aux;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {

        int f, c=0;
        int x=-1, y;

        string cad;
        for (f = 0; f < 4; f++)
        {
            x++;
            for (c = 0; c < 4; c++)
            {

                w[f, c] = Int32.Parse(clave[f, x], System.Globalization.NumberStyles.HexNumber);
            }

            x = x << 0;

        }

это мой код, но только печатает мне стоимость, которая находится в диагонали, и не делает мне перемещение в левую сторону

0
задан 07.11.2019, 06:49
1 ответ

Главный файл - как так:
В массиве w линия 0 колонна c, каждый элемент берет стоимость clave в той же линии в колонне c + 0
В массиве w линия 1 колонна c, каждый элемент берет стоимость clave в той же линии в колонне c + 1
В массиве w линия 2 колонна c, каждый элемент берет стоимость clave в той же линии в колонне c + 2
В массиве w линия 3 колонна c, каждый элемент берет стоимость clave в той же линии в колонне c + 3

Проблема здесь - результат c + numero_de_fila может превосходить 4, длинный максимум линии.
И чтобы предотвращать IndexOutOfBound ошибка, мы реализуем модуль (%) 4, так результат находится между 0 и 3 (содержащими). В этом способе, мы можем добиваться перемещения слева от договора с правилом, описанный.


Например:

Стоимость w[2,0] должна быть стоимостью clave линия 2 и колонны: (0+2) % 4, следует 2. Так, w[2,0] берет стоимость clave[2,2] ( 5d ).

Стоимость w[3,1] должна быть стоимостью clave линия 3 и колонны: (1+3) % 4, следует 0. Так, w[3,1] берет стоимость clave[3,0] ( ae ).


Код:

private void button1_Click(object sender, EventArgs e)
{
    int desplazar = 0;
    int columnaClave = 0;

    for (int f = 0; f < 4; f++)
    {
        desplazar = f;

        for (int c = 0; c < 4; c++)
        {
            columnaClave = (c + desplazar) % 4;
            w[f, c] = Int32.Parse(clave[f, columnaClave], System.Globalization.NumberStyles.HexNumber);

        }
    }
}
1
ответ дан 01.12.2019, 12:27