Duda con el uso de porcentaje

Iniciado por arts, 2 Enero 2014, 00:51 AM

0 Miembros y 1 Visitante están viendo este tema.

arts

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 (java) [Seleccionar]
import java.util.Random;

public class PaqueteDeCartas {

private Carta paquete[]; // creamos un array del tipo Carta (contendrá cartas)
private int cartaActual;
private final int NUMERO_DE_CARTAS = 52;
private Random numeros_aleatorios;

// CONSTRUCTOR DEL PAQUETE CARTAS
public PaqueteDeCartas() {
String caras[] = { "As", "Dos", "Tres", "Cuatro", "Cinco", "Seis",
"Siete", "Ocho", "Nueve", "Diez", "Jota", "Dama", "Rey" };
String palos[] = { "Corazones", "Diamantes", "Treboles", "Picas" };

paquete = new Carta[NUMERO_DE_CARTAS]; // creas un paquete con 52 casillas una para cada carta
cartaActual = 0;
numeros_aleatorios = new Random();

// llenamos el paquete con objetos carta
for (int cuenta = 0; cuenta < paquete.length; cuenta++) {
paquete[cuenta] = new Carta(caras[cuenta % 13], palos[cuenta / 13]);
}
}

xiruko

En enteros, '%' es el operador MOD o resto. Por ejemplo:

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:

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:

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:

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.

arts

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