2011-05-21 3 views
0

Je me demande ce que int id = 5% 2; fait exactement et cherche aussi des choses semblables.Où puis-je trouver plus d'informations sur int% 5?

Raison:

Je veux calculer par un numéro sur lequel la ligne/colonne, l'élément doit être debout.

[Exemple]

I ont une grille qui est 5x5.

Si id = 05, il devrait être sur la 1ère ligne et la 5ème colonne

Si id = 10, il devrait être sur la 2ème ligne et la 5ème colonne

Si id = 12, il devrait être sur la 3ème ligne et la 2ème colonne

Comment vous attraper ma dérive!

:

Répondre

2

Le module (% dans certaines langues dérivées de C) est le reste restant lorsqu'un nombre est divisé par un autre. Ainsi, 38 % 6 est 2 (38/6 est 6 avec un reste de 2).

Il est généralement utilisé pour exactement le genre de chose que vous demandez. Si votre grille 5x5 est:

col 1 2 3 4 5 
row 
1  1 2 3 4 5 
2  6 7 8 9 10 
3  11 12 13 14 15 
4  16 17 18 19 20 
5  21 22 23 24 25 

alors la ligne peut être calculé comme (x-1)/5+1 (qui est la division entière plutôt que la virgule flottante) et la colonne comme (x-1)%5+1:

x (x-1)/5+1 (x-1)%5+1 
-- --------- --------- 
5  1   5 
10  2   5 
12  3   2 

La raison pour laquelle vous soustrayez d'abord une puis ajoutez-le parce que le module fonctionne mieux sur les nombres basés sur zéro alors que le vôtre est basé sur un seul. Le soustraire/ajouter est de transformer votre système en base zéro avant d'effectuer le module, puis en le retournant en un après base.

1

% est le Modulus Operator, ou en termes plus communs le reste (ps ne hésitez pas à modifier mes tags Je ne sais pas quoi mettre sur cette question.). Donc, 5%2 vous donnerait un identifiant de 1. En utilisant cela, vous pouvez calculer les valeurs row et column dans votre grille. Ainsi, par exemple

id = 5; 
column = (id - 1)%5 + 1; 
row = (id - 1)/5 + 1; 

Le - 1 est parce que vous semblez commencer vos lignes à 1 au lieu de 0.

+0

Si id == 5 => ligne = 0 et colonne = 4. Dans l'exemple, ils sont 1 et 5 – Stecya

+0

@Stecya merci, corrigé. –

Questions connexes