Salve, mi sono inbattuto in programma che simula il mescolamento e la distribuzione di un mazzo di carte francesi. il programma funge perfettamente ma usa una funzione per ordinare gli elementi nella struct il cui funzionamento non m'è chiaro.

la struct:

struct card{
char *face[];
char *suitt[];
};

typedef struct card Card;

ci sono poi due puntatori ad array
char *face[]= {"Asso", "due"......};
char *suit[] = {"Picche", Cuori".....};
Card deck[52];

e questa è la funzione che inizializza deck in maniera ordinata

void filldeck( Card *wDeck, char *wface[], char *wsuit)
{
int i;
for (i=0; i <=51; i++)
{
wDeck[i].face = wface[i % 13];
wDeck[i].suit = wsuit[ i / 13];
}
}

domanda come fa a inizializzare ordinatamente l'array di tipo struct utilizzando modulo e divisione? Nello specifico, potete illustrarmi più chiaramente il procedimento? Grazie mille