Diferència entre revisions de la pàgina «ASIX-M3-UF2-A1.1-Exercicis disseny descendent»

De wikiserver
Dreceres ràpides: navegació, cerca
(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...».)
 
Línia 1: Línia 1:
 
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
 
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 n<sup>2</sup> on n és el numero de files i columnes.
 
des de 1 fins a n<sup>2</sup> on n és el numero de files i columnes.
 +
 
Com construir-lo?
 
Com construir-lo?
+
 
El numero 1 el situarem en el quadrat superior al central (per exemple, per n=5,
+
:* 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 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).
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
 
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.
 
sortim per dalt, entrem per baix.
+
 
A més ens podem trobar que la posició on toca anar un número ja es troba
+
:* 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 ).
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:
+
:* Un exemple de quadrat màgic per a N=5 seria:
23 6 19 2 15
+
<pre>
10 18 1 14 22
+
      23 6 19 2 15
17 5 13 21 9
+
      10 18 1 14 22
4 12 25 8 16
+
      17 5 13 21 9
11 24 7 20 3
+
      4 12 25 8 16
El programa tindrà les següents funcions:
+
      11 24 7 20 3
+
</pre>
 +
 
 +
:*El programa tindrà les següents funcions:
 +
 
 
llegirDimensio : Li demanem a l’usuari que ens indiqui la mida N de la matriu.
 
llegirDimensio : Li demanem a l’usuari que ens indiqui la mida N de la matriu.
 
Si el valor és correcte, la funció el retorna.
 
Si el valor és correcte, la funció el retorna.

Revisió del 10:41, 2 gen 2021

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)