% è l'operatore resto esattamente per come dici tu...
E' comodo da usare in qesto contesto perchè permette di implementare la posizione 'circolare' nell'array senza fare controlli 'strani'...
Immagina un array di 3 posizioni 0 1 e 2. Inizialmente IN=0.
Effettuando sempre IN++ arrivi ad un certo punto che IN avrà un valore al di fuori dell'array (3) e qundi devi fare un controllo eslpicito per riportare IN a 0 del tipo if(IN==3) {IN=0;}
Utilizzando il resto ottieni direttamente il risultato voluto, infatti:
0%3=0 --> IN = 0
1%3=1 --> IN = 1
2%3=2 --> IN = 2
3%3=0 --> IN = 0
Spero di averti fatto capire!!
Ciao