Ola pessoal, estou querendo montar em c++, um quadrado magico de 3x3, consegui fazer a leitura da matriz a gora falta o resto, se alguém tiver algum material que possa me auxiliar na construção do mesmo, e puder me passar ficaria feliz....
você quer fazer em C++ um programa para resolver quadrado mágico 3x3? é isso?
tem logica/algoritimo para isso.. caso seja!
explica melhor ai!
Dicas para solucionar o quadrado mágico 3x3:
1. O total que se quer obter em todos os sentidos deverá ser dividido por 3. O que resultará no número a ser colocado no centro do quadrado.
2. Os números a serem colocados nos cantos deverão ser pares se o centro for ímpar, ou vice e versa.
3. O último número a ser colocado deverá ser o centro mais 4.
Essas regras só valem se os números forem múltiplos de 3. Ex: 15, 18, 21, 24, 27, 30 etc.
fonte: Wikipedia
fiz ele no papel, pedindo um total de 12, mas não achei nenhum algoritmo, não se se ajuda essas dicas, mas ta ai.
vou ve se consigo fazer.
Quote from: Reeves on 08 de May , 2010, 01:59:32 PM
você quer fazer em C++ um programa para resolver quadrado mágico 3x3? é isso?
tem logica/algoritimo para isso.. caso seja!
explica melhor ai!
É isso mesmo Reeves to querendo fazer um programa, mas estou com dificuldades na lógica, dei uma googlada e não achei nada interessante que poderia me auxiliar, estou recorrendo aqui, para ver se alguém sabe algum link, ou alguma coisa que possa me ajudar...
depois de muitos calculos achei :D
vamos supor a seguinte matriz
a b c
d e f
g h i
digamos q vc que ter o valor total de 12
segundo as dicas q eu postei ali em cima
o elemento 'e' da matriz seria 12/3 ou seja 4
ela ficaria assim
a b c
d 4 f
g h i
a partir dai o elemento 'a' será 'e'-3 ou seja 4-3 = 1
o elemento 'i' será 'e' + 3 ou seja 4+3 = 7
1 b c
d 4 f
g h 7
o elemento 'c' será 'e' - 1 ou seja 4 -1 = 3
o elemento 'g' sera 'e' + 1 ou seja 4 + 1 = 5
1 b 3
d 4 f
5 h 7
o elemento 'b' é 12 - (3+1) = 8
o elemento 'h' é 12 - (5+7) = 0
1 8 3
d 4 f
5 0 7
o elemento 'd' é 12 - (1+5) = 6
o elemento 'f' é 12 - (3+7) = 2
1 8 3 = 12
6 4 2 = 12
5 0 7 = 12
12 12 12
serve pra qualquer total desde que seja multiplo de 3
Quote from: Imoogi on 08 de May , 2010, 04:46:08 PM
depois de muitos calculos achei :D
vamos supor a seguinte matriz
a b c
d e f
g h i
digamos q vc que ter o valor total de 12
segundo as dicas q eu postei ali em cima
o elemento 'e' da matriz seria 12/3 ou seja 4
ela ficaria assim
a b c
d 4 f
g h i
a partir dai o elemento 'a' será 'e'-3 ou seja 4-3 = 1
o elemento 'i' será 'e' + 3 ou seja 4+3 = 7
1 b c
d 4 f
g h 7
o elemento 'c' será 'e' - 1 ou seja 4 -1 = 3
o elemento 'g' sera 'e' + 1 ou seja 4 + 1 = 5
1 b 3
d 4 f
5 h 7
o elemento 'b' é 12 - (3+1) = 8
o elemento 'h' é 12 - (5+7) = 0
1 8 3
d 4 f
5 0 7
o elemento 'd' é 12 - (1+5) = 6
o elemento 'f' é 12 - (3+7) = 2
1 8 3 = 12
6 4 2 = 12
5 0 7 = 12
12 12 12
serve pra qualquer total desde que seja multiplo de 3
Valeu pela dica, já estou terminando de fazer, durante a semana, quando tiver um tempo eu posto ele aqui,blz
Boaa Imoogi, sempre surpreendendo kra ;)
isso ai bl4ckboot47, agora é só ralar e mostrar sua conquista o/
abrindo um assunto a parte, já conseguiram realizar o cubo de rubik sem ajuda?
@imoogi velho eu tentei entender seu raciocínio mas nem sei porque tu deixou a conta como soma 12?
abraços
Quote from: KEst on 10 de May , 2010, 03:15:06 PM
abrindo um assunto a parte, já conseguiram realizar o cubo de rubik sem ajuda?
@imoogi velho eu tentei entender seu raciocínio mas nem sei porque tu deixou a conta como soma 12?
abraços
Um quadrado magico é quando a soma dos elementos das linhas, colonas, e diagonais é sempre uma constante, no caso 12,
1º linha 1+8+3 = 12
2º linha 6+4+2 = 12
3º linha 5+0+7 = 12
1º coluna 1+6+5 = 12
2º coluna 8+4+0 = 12
3º coluna 3+2+7 = 12
diagonal principal 1+4+7 = 12
diagonal secundaria 5+4+3 = 12
essa constante pode ser 15, 18, 21, qualquer numero multiplo de 3, o que vai mudar é só em qual
algarismo ele vai começar e terminar, constante 12 ele começa com 0 até 8, constante 15 começa com 1 até 9, etc.
Vocês não estão falando de Cubo de Rubik então?
shuhsushush que furo meu!
Ola, como prometido acabei de fazer o algoritmo do quadrado acabei fazendo em pseudo-código no visualg, fiquem a vontade, podem fazer comentário, e modificar o código..blz....
algoritmo "Quadrado magico"
// Função :
// Autor : Tiago Casanova
// Data : 9/5/2010
// Seção de Declarações
var
mat : vetor [1..4,1..4] de real
l,c:inteiro
dprincipal,dsecundario:real
inicio
// Seção de Comandos
dprincipal<-0
dsecundario<-0
para l<-1 ate 3 passo 1 faca
para c<-1 ate 3 passo 1 faca
escreva("Informe os numeros da matriz",(l),(c),": ")
leia(mat[l,c])
fimpara
fimpara
para l<-1 ate 3 passo 1 faca
para c<-1 ate 3 passo 1 faca
mat[l,4]<-mat[l,4]+mat[l,c]
mat[4,c]<-mat[4,c]+mat[l,c]
fimpara
fimpara
// escreva("Os valores lido da matriz sao: ")
// para l<-1 ate 4 passo 1 faca
// para c<-1 ate 4 passo 1 faca
// escreva(mat[l,c])
// fimpara
// fimpara
para l<-1 ate 3 passo 1 faca
para c<-1 ate 3 passo 1 faca
se(l=c) entao
dprincipal<-dprincipal+mat[l,c]
fimse
fimpara
fimpara
// escreva("Soma matriz principal he: ", dprincipal)
para l<-1 ate 1 passo 1 faca
para c<-1 ate 1 passo 1 faca
dsecundario<- mat[l,c+2]+mat[l+1,c+1]+mat[l+2,c]
fimpara
fimpara
//escreva(" - O valor da matriz secundaria he: ", dsecundario)
se(mat[1,4] = mat[2,4])entao
se(mat[1,4] = mat[3,4])entao
se(mat[4,1] = mat[4,2])entao
se(mat[4,1] = mat[4,3])entao
se(dprincipal = dsecundario)entao
escreva("É um quadrado magico")
fimse
fimse
fimse
fimse
senao
escreva("Não é uma quadrado magico")
fimse
fimalgoritmo
Cara fiz em Ansi C usando pocas linhas sem usar memoria e vetor nem ponteiro
/*
.--..--..--..--..--..--.
.' \ (`._ (_) _ \
.' | '._) (_) |
\ _.')\ .----..---. /
|(_.' | / .-\-. \ |
\ 0| | ( O| O) | o|
| _ | .--.____.'._.-. |
\ (_) | o -` .-` |
| \ |`-._ _ _ _ _\ /
\ | | `. |_||_| | Solution!
| o | \_ \ | -. .-.
|.-. \ `--..-' O | `.`-' .'
_.' .' | `-.-' /-.__ ' .-'
.' `-.` '.|='=.='=.='=.='=|._/_ `-'.'
`-._ `. |________/\_____| `-.'
.' ).| '=' '='\/ '=' |
`._.` '---------------'
//___\ //___\
|| ||
||_.-. ||_.-.
(_.--__) (_.--__)
Author: Antonio "Cooler_"
contact: tony.unix@yahoo.com.br
license: BSD
http://devio.us/~cooler/
Programa validador de quadros mágicos 3x3
sem usar aloc,vetor,ponteiro...
*/
#include<stdio.h>
#define w printf
#define sf scanf
int main() {
int l1,l2,l3,l4,l5,l6,l7,l8,l9;
while(1) w("\x0aPrograma verificador de quadro mágico 3x3\x0a coded by Cooler_ \x0a----------\x0a")&w("digite numero \x0a")&sf("%d",&l1)&w("digite numero \x0a")&sf("%d",&l2)&w("digite numero \x0a")&sf("%d",&l3)&w("digite numero \x0a")&sf("%d",&l4)&w("digite numero \x0a")&sf("%d",&l5)&w("digite numero \x0a")&sf("%d",&l6)&w("digite numero \x0a")&sf("%d",&l7)&w("digite numero \x0a")&sf("%d",&l8)&w("digite numero \x0a")&sf("%d",&l9)&w("mostrando quadro\x0a")&w("[%d,%d,%d]\x0a[%d,%d,%d]\x0a[%d,%d,%d]\x0a",l1,l2,l3,l4,l5,l6,l7,l8,l9)&w("Seu Quadro %s\x0a",((l5+3)==l9) && (((!(l5%2))&&(l1%2!=0)&&(l3%2!=0)&&(l7%2!=0)&&(l9%2!=0)) || ((l5%2!=0)&&(!(l1%2))&&(!(l3%2))&&(!(l7%2))&&(!(l9%2))))?"é mágico!":"não é mágico!");
}
hahaha divirta-se um colega da USP me mostro um desafio semelhante porem um poco mais chato , alias bem chato mesmo mas não dificil...