Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > массив массивов


Автор: jGorets 12.9.2010, 18:09
задача следующая, помогите реализовать, у меня есть матрица 6х6, надо вывести ее на экран, но что бы она сдвигалась на заданное количество шагов по диагонали(т.е не сдвигалась, а копировалась), а все остальное пространство было забито нулями или можно было вывести еще какие-то.. 

Автор: Nofate 12.9.2010, 20:50
Может быть опишите задачу поконкретнее? 

Автор: jGorets 12.9.2010, 21:40
Цитата(Nofate @ 12.9.2010,  20:50)
Может быть опишите задачу поконкретнее?

у меня есть матрица, например,
0 1 1 
1 0 1 
1 1 0
теперь я задаю количество нужных мне шагов и матрица должна расширится, т.е. вывод
0 1 1 |0 0 0
1 0 1 |0 0 0
1 1 0 |0 0 0
____ |_____
0 0 0 |0 1 1
0 0 0 |1 0 1
0 0 0 |1 1 0
т.е., начальная матрица просто съежает по диагонали, а стороны забиваются 0, ну или туда добавляются матрицы пустые матрицы

Автор: soulcub 13.9.2010, 06:51
Ну, не знаю как там в задаче обговаривается, если сдвиг меньше/больше самой матрицы.. Но для такого примера как был показан(если матрица увеличивается в 4 раза), всё довольно таки просто. Создаёшь новую матрицу:

Код

int[][] tempMatrix;


Заполняешь её нулями

Код

for(int i = 0; i < newCount; i++) {
   for(int j = 0; j < newCount; j++) {  //Если матрица квадратная! Если нет - поставить соответствующее число колонок, вместо j
      tempMatrix[i][j] = 0;
   }
}


Ну а дальше копируем начальную матрицу в новую по тем правилам, которые должны быть описаны в задаче.
Если начальная матрица диагональная(как в примере), то всё просто. Та и в других случаях сложности не вижу..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)