ASIX-M3-UF2-A1.1-Exercicis disseny descendent

De wikiserver
La revisió el 10:38, 2 gen 2021 per Rsort (Discussió | contribucions) (Es crea la pàgina amb «1. Construir un Quadrat màgic. Un quadrat màgic és una matriu quadrada (mateix nombre de files que de columnes), amb un nombre senar de files i columnes on la suma...».)
(dif) ← Versió més antiga | Versió actual (dif) | Versió més nova → (dif)
Dreceres ràpides: navegació, cerca

1. Construir un Quadrat màgic. Un quadrat màgic és una matriu quadrada (mateix nombre de files que de columnes), amb un nombre senar de files i columnes on la suma dels elements de totes les seves files i les seves columnes i les dues diagonals val igual. En aquest quadrat no hi ha cap número repetit, i els números que hi ha d'haver han d'anar des de 1 fins a n2 on n és el numero de files i columnes. Com construir-lo?  El numero 1 el situarem en el quadrat superior al central (per exemple, per n=5, el quadrat central és (2,2) i el que està per sobre seu el (1,2).  El següent número el situarem un quadrat a la dreta i un per sobre. Si un numero està a la posició (i,j), el següent el situarem en (i-1,j+1) .  Si resulta que al fer el moviment sortim per la dreta, entendrem que automàticament entrarem per l'esquerra, és a dir, és com si la matriu estigués enganxada la part esquerra amb la part dreta. El mateix passa amb dalt i baix. Si sortim per dalt, entrem per baix.  A més ens podem trobar que la posició on toca anar un número ja es troba ocupada. Llavors el que farem és tornar a la posició on estàvem i fer el moviment que puja dos posicions (i-2, j ).Un exemple de quadrat màgic per a N=5 seria: 23 6 19 2 15 10 18 1 14 22 17 5 13 21 9 4 12 25 8 16 11 24 7 20 3 El programa tindrà les següents funcions:  llegirDimensio : Li demanem a l’usuari que ens indiqui la mida N de la matriu. Si el valor és correcte, la funció el retorna.  inicialitzarQuadrat : Simplement posem tots els valors a 0  calculaPosicioInicial: Segons la dimensió, calculem la primera posició  assignaValor : Posa un valor en una posició  calcularNovaPosicio : Retorna els valors de fila i columna vàlids per a col·locar el proper valor.  imprimirQuadrat: Treu per pantalla el quadrat màgic Per a fer-ho primer crearem la classe Posicio que simplement contindrà els valors de fila i columna. El programa serà semblant a aquest : dim=llegirDimensio(); inicialitzarQuadrat(); posicio=calculaPosicioInicial(dim); limit=dim*dim; for (valor=0;valor<limit;valor++){ assignaValor(taula,posicio,valor); posicio =calcularNovaPosicio(taula,posicio ) ; } imprimirQuadrat(taula)