Задать вопрос
@lucky_e3

Как правильно переместить данные из одного массива в другой?

Есть два массива, один из которых меньше другого, например, массив чисел 100x100 и массив того же типа 10x10.
При срабатывании определенного события числа из большого массива должны передаться в малый, но со смещением, например, в 5 "ячеек". Грубо говоря, малый массив двигается по большему.
Для наглядности:
82af9d4345b04cdf84241cb9e18b7aed.png

Зеленые стрелки обозначают условное направление "движение" малого массива.

UPD. Малый массив должен "двигаться" как вправо, так и влево, как вверх, так и вниз.
  • Вопрос задан
  • 8005 просмотров
Подписаться 2 Оценить Комментировать
Ответ пользователя Oxoron К ответам на вопрос (3)
@Oxoron
Шарпер
// Вместо переменных можно использовать параметры метода
int leftBorderIndex = ...; // Координаты угла квадрата
int topBorderIndex = ...;
int leftShift = ...; // Сдвиг влево
int topShift = ...; // Сдвиг вправо

int[100,100] largeArr= ...;
int[10,10] smallArr = ...;

int cornerLeft = leftBorderIndex + leftShift; // Координаты лево-верхнего угла квадрата, откуда копируем данные
int cornerTop = topBorderIndex + topShift; // Вставить проверки на выход из границ большого массива

for(int row = cornerTop, i=0; row<cornerTop+10;row++, i++) // Проверить инициализацию и инкремент двойных команд
{
    for(int col = cornerLeft, j=0; col<cornerLeft+10; col++,j++)
    {
        smallArr[i,j] = largeArr[row,col];
    }
}


В лоб - как-то так (писал без компилятора, могут быть ошибки). Для ускорения надо работать со столбцами и строками - выносить их обработку в отдельные потоки.
Ответ написан