Um quadrado mágico é uma matriz de inteiros de duas dimensões em que a soma das colunas, das linhas e das diagonais principais é constante. Exemplo de quadrado mágico de 3x3:
8 1 6
3 5 7
4 9 2
Preciso de ajuda para criar esse programa em java; Detalhe: O usuario deve entrar com o tamanho que o quadrado deve ter (no exemplo acima, o tamanho é 3);
Se alguem tivé-lo pronto, melhor ainda, senão aceito todas as dicas
o usuário vai ter q entrar com 2 valores né?
o tamanho do quadrado e o valor da constante né?
se for isso, vc vai ter q fazer (acho) q 2 looping aninhados q ficará testando se a soma dos valores ja chegou na constante…
vc tem alguma coisa pronta ja? e ta com alguma duvida?
Um valor só, que é o tamanho da matriz; Por exemplo, se entrar com valor 5, será uma matriz 5x5 e os numeros a serem ordenados vão de 1 a 25;
Ainda não tenho nada pronto;
pra inserir os valores na matriz…
suponhamos que o usuário tenha digitado 5, então mat[5][5]
[code]int vLido = ?? ; //ler valor, nesse caso 5
int cont = 1;
for(int i=0 ; i < vLido ; i++)
for(int j=0 ; j < vLido ; j++)
mat[i][j] = cont++;
[/code]
vai ficar assim:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
se ainda tiver dúvida é só perguntar, até mais
Até ai eu entendi, o que preciso agora é uma fórmula para que o programa ordene esses numeros de modo que a soma das colunas, das linhas e das diagonais seja igual;
pensei que vc tivesse a fórmula… foi mal
mas esse negócio é difícil pra caramba… boa sorte
até mais
Descobri uma lógica para distrubuição dos numeros em matrizes de tamanho ímpar:
i) Escrever o número 1 na casa central da primeira linha;
(ii) 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;
(iii) 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;
(iv) Reppetir as etapas (ii) e (iii) até preencher os restantes números, obtendo um quadrado mágico.
Assim, surge outra duvida:
Existe algo como uma matriz circular? Como implemento isso?
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 |