я загорожен в проблеме, у меня есть массив и я хочу, чтобы первая линия осталась равной, но начиная со второй линии пробежалась стоимость в левую сторону,
Первоначальный массив
{{"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; }
это мой код, но только печатает мне стоимость, которая находится в диагонали, и не делает мне перемещение в левую сторону
Главный файл - как так:
В массиве 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);
}
}
}