Quadrado Mágico

7 respostas
D

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

7 Respostas

D

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?

D

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;

A

pra inserir os valores na matriz...
suponhamos que o usuário tenha digitado 5, então mat[5][5]

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++;
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

D

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;

A

pensei que vc tivesse a fórmula… foi mal

mas esse negócio é difícil pra caramba… boa sorte

até mais

D
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?

D

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 |

Criado 7 de junho de 2004
Ultima resposta 9 de jun. de 2004
Respostas 7
Participantes 3