2016-12-19 3 views
0

Я использую C#. Я хочу заменить значение в массиве двух измерений другим двухмерным массивом.Значение массива двух измерений заменить на массив

Массив, что нужно заменить значение является

{ 
    {100, 100, 100, 100}, 
    {100, 100, 100, 100}, 
    {100, 100, 100, 100}, 
    {100, 100, 100, 100} 
} 

и некоторый массив, что заменить значение этого массива

{ 
    {500,500}, 
    {500,500} 
} 

и я ожидал:

{ 
    {100,100,100,100}, 
    {100,500,500,100}, 
    {100,500,500,100}, 
    {100,100,100,100} 
} 
+0

Вам нужно разместить свой код, если вы хотите какой-либо надежды на помощь. – Daniel

+0

и какова логика этого? – mybirthname

ответ

0

Просто, чтобы понять код с двумя петлями:

var bigger = new int[,] 
{ 
    {100, 101, 102, 103, 104}, 
    {100, 100, 100, 100, 100}, 
    {100, 100, 100, 100, 100}, 
    {100, 100, 100, 100, 100}, 
}; 

var smaller = new int[,] 
{ 
    {1, 2}, 
    {3, 4}, 
}; 

ReplaceValues (bigger, smaller, 3, 2); 

и статический метод:

public static void ReplaceValues (int[,] destinationArray, int[,] replaceWith, int columnOffset, int rowOffset) 
{ 
    for (int row = 0; row < replaceWith.GetLength (0); row++) 
    { 
     for (int column = 0; column < replaceWith.GetLength (1); column++) 
     { 
      destinationArray[row + rowOffset, column + columnOffset] = replaceWith[row, column]; 
     } 
    } 
} 

Конечно, вы должны обновить этот код в зависимости от ваших требований.

Результат:

Result

0

В этом случае вам нужно сравнить размер этих массивов: Большой массив: 4x4 и th e small - 2x2 (double). Таким образом, цикл через большой массив является:

bigarray[i x 2 + 1, j x 2 + 1] = smallarray [i,j]. 

Так формульной может быть:

bigarray[i x compare_value + 1, j x compare_value + 1] = smallarray [i,j] 

С compare_value = bigarray/ smallaray.

Смежные вопросы