Foro de elhacker.net

Programación => Java => Mensaje iniciado por: arts en 2 Enero 2014, 00:51 am



Título: Duda con el uso de porcentaje
Publicado por: arts en 2 Enero 2014, 00:51 am
Muy buenas, hace poco leí en un libro un ejercicio sobre arrays y me quede un tanto con la duda.
La duda era dentro de en un for con un recorrido de 0 hasta 52.
aparece cuenta % 13, es decir que operación se realiza si cuenta vale 2 por ejemplo.

Código
  1. import java.util.Random;
  2.  
  3. public class PaqueteDeCartas {
  4.  
  5. private Carta paquete[]; // creamos un array del tipo Carta (contendrá cartas)
  6. private int cartaActual;
  7. private final int NUMERO_DE_CARTAS = 52;
  8. private Random numeros_aleatorios;
  9.  
  10. // CONSTRUCTOR DEL PAQUETE CARTAS
  11. public PaqueteDeCartas() {
  12. String caras[] = { "As", "Dos", "Tres", "Cuatro", "Cinco", "Seis",
  13. "Siete", "Ocho", "Nueve", "Diez", "Jota", "Dama", "Rey" };
  14. String palos[] = { "Corazones", "Diamantes", "Treboles", "Picas" };
  15.  
  16. paquete = new Carta[NUMERO_DE_CARTAS]; // creas un paquete con 52 casillas una para cada carta
  17. cartaActual = 0;
  18. numeros_aleatorios = new Random();
  19.  
  20. // llenamos el paquete con objetos carta
  21. for (int cuenta = 0; cuenta < paquete.length; cuenta++) {
  22. paquete[cuenta] = new Carta(caras[cuenta % 13], palos[cuenta / 13]);
  23. }
  24. }
  25.  


Título: Re: Duda con el uso de porcentaje
Publicado por: xiruko en 2 Enero 2014, 01:45 am
En enteros, '%' es el operador MOD o resto. Por ejemplo:

Código:
2 mod 4 = 2 -> 2/4 = 0 con 2 de resto
13 mod 3 = 1 -> 13/3 = 4 con 1 de resto

Y como ya sabrás, '/' es el operador de división, pero si se trata de enteros solo se redondea hasta la unidad. Por ejemplo:

Código:
2 / 4 = 0
13 / 3 = 4

Y iendo a tu programa, cuando haces cuenta%13 es porque hay 13 distintos tipos de cartas: A,2,3,...Q,K, por lo que tendrás:

Código:
 cuenta = 0 -> caras[0%13]=caras[0]="As"
cuenta = 1 -> caras[1%13]=caras[1]="Dos"
...
cuenta = 13 -> caras[13%13]=caras[0]="As"
cuenta = 14 -> caras[14%13]=caras[1]="Dos"

Por lo que cada 13 cartas, se repite el ciclo hasta que haya una carta de cada palo, lo que harían las 4x13=52 cartas.

Y para el tema de los palos, a cada pack de 13 cartas le asignas un palo distinto:

Código:
cuenta = 0 -> palos[0/13]=palos[0]="Corazones"
cuenta = 1 -> palos[1/13]=palos[0]="Corazones"
...
cuenta = 13 -> palos[13/13]=palos[1]="Diamantes"
cuenta = 14 -> palos[14/13]=palos[1]="Diamantes"

Espero haberte ayudado, saludos.


Título: Re: Duda con el uso de porcentaje
Publicado por: arts en 3 Enero 2014, 01:56 am
Osea que se refiere al resto, el resto de 0/13 es 0 por lo que la posición 0 se encuentra el As, 1/13 = resto 1 ahora la posición es 1 y corresponde con el dos.
Es eso verdad ?.