Matriz Circular

4 respostas
D

Preciso saber se existe alguma coisa em java como uma matriz “circular”, para fazer o seguinte:

  1. Escrever o número 1 na casa central da primeira linha;
  2. O número seguinte deverá ser colocado na diagonal, numa casa contígua por cima da anterior, a menos que esta esteja ocupada. Se essa casa pertencer a um quadrado exterior, devemos procura a sua localização na casa correspondente ao quadrado que pretendemos construir;
  3. Se, no quadrado que estamos a construir, a casa contígua na diagonal estiver preenchida, escreva o número na casa que fica imediatamente abaixo à do número anterior;
  4. Reppetir as etapas (2) e (3) até preencher os restantes números;

Tipo assim: matriz 3x3

Começa assim:
|… | 1 |… |
| … | … | … |
| … | … | … |

Depois assim; O 2 ficaria fora da matriz, por isso tem que ser circular, pra ficar na mesma posição que esta, e na mesma matriz
…2
| … | 1 | … |
| … | … | … |
| … | … | … |

| … | 1 | … |
| … | … | … |
| … | … | 2 |

Mesmo caso agora com o numero 3
| … | 1 | … |
| … | … | … | 3
| … | … | 2 |

=
| … | 1 | … |
| 3 | … |… |
| … | … | 2 |

4 Respostas

D

pow cara…
ta meio confuso isso! :lol:

uma coisa é certa, vc nao vai encontrar nenhum método q faça isso pronto no java…

vc vai ter q fazer um algoritmo pra fazer isso…
alguma coisa recursiva…
ou entao essa função seja chamada dentro de um looping aí só vai mudando os parametros…

pelo o q eu vi… e tentei entender…
vc vai ter q fazer alguma coisa q ficasse verificando se alguma casa da matriz ta ocupada ou nao… aí caso nao esteja, fazer a rotação…

fazer a rotação nao parece ser o mais dificil…
vc poe o numero no proximo espaço q deseja rotacionar, e limpa o espaço antigo…

como isso vai se repetir varias vezes… faça isso num looping… o metodo deve ter parametros pra saber as coordenadas ou coisa assim…
e aí a cada volta do looping vc muda os parametros…

bom… acho q essa é a ideia…

boa sorte ae…
flw

D

O que eu não sei é justamente fazer essa rotação; Olha a minha ideia:

int[][] matriz = new int[3][3];

for ( int a=0; a<=9; a++ ){

tabela[a][a+1] = 1;

/<em>a ideia é colocar na linha 0, coluna 1 o numero 1</em>/

||.1.||

||||

||||

tabela[][] = 2;
/não sei como faço para o numero 2 ficar na posição certa/

…2
|…|.1.|…|
|…|…|…|
|…|…|…|

|…|.1.|…|
|…|…|…|
|…|…|.2.|

D

O que eu não sei é justamente fazer essa rotação; Olha a minha ideia:

int[][] matriz = new int[3][3];

for ( int a=0; a<=9; a++ ){

tabela[a][a+1] = 1;

/<em>a ideia é colocar na linha 0, coluna 1 o numero 1</em>/

||.1.||

||||

||||

tabela[][] = 2;
/não sei como faço para o numero 2 ficar na posição certa/

…2
|…|.1.|…|
|…|…|…|
|…|…|…|

|…|.1.|…|
|…|…|…|
|…|…|.2.|

D

O que eu não sei é justamente fazer essa rotação; Olha a minha ideia:

int[][] matriz = new int[3][3];

for ( int a=0; a<=9; a++ ){

tabela[a][a+1] = 1;

/<em>a ideia é colocar na linha 0, coluna 1 o numero 1</em>/

||.1.||

||||

||||

tabela[][] = 2;
/não sei como faço para o numero 2 ficar na posição certa/

…2
|…|.1.|…|
|…|…|…|
|…|…|…|

|…|.1.|…|
|…|…|…|
|…|…|.2.|

Criado 10 de junho de 2004
Ultima resposta 11 de jun. de 2004
Respostas 4
Participantes 2