2009-05-23 8 views
1

nous avons 6 groupes de 253 machines chacune,
mais chaque groupe va de la machine 2 à la machine # 254,
et continue les identifications à représenter chaque machine.

comme dans le tableau suivant:


Groupe ID machine
0 2-254 1-253
Comment créer une fonction C# pour convertir des groupes de plages de nombres en numéros continus

1 2-254 254-506

2 2-254 507-759

3 2-254 760-1012

4 2-254 1013-1265

5 2-254 1266-1518


Je cherche aC# moyen facile d'écrire une fonction de conversion d'un ID à un groupe -Machine

exemple: ID 508 est le groupe n ° 2, n ° 3
appareil (appareil 507 est le
première machine dans le groupe 2 et parce qu'il commence par 2 la deuxième machin est la machine n ° 3)

0 Exemple: si j'obtiens les paramètres: groupe # 2 machine # 5,
la fonction doit retourner l'ID 510
Comment est-ce que je peux faire ceci?
Je suis venu avec une formule mais cela n'a pas fonctionné
des idées?
merci

+0

Je trouve votre question déroutante. Le concept de "machine id" est très vague parce que vous semblez utiliser le même nom pour deux choses différentes ... serialNumber vs groupAndMachineId. Veuillez modifier la question pour désamorcer ces deux concepts. – corlettk

Répondre

4

Soustraire premier de l'identifiant pour l'obtenir base zéro, alors vous pouvez le diviser en groupe et la machine, et régler le numéro de la machine au 2-254 gamme en ajoutant deux:

id--; 
int group = id/253; 
int machine = (id % 253) + 2; 

par deux fonctions distinctes:

int GetGroup(int id) { 
    return (id - 1)/253; 
} 

int GetMachine(int id) { 
    return ((id - 1) % 253) + 2; 
} 

Pour obtenir l'ID du groupe et de la machine, faites l'inverse; soustrayez deux du numéro de la machine pour le rendre à zéro, fusionnez-les et ajoutez-en un:

int GetId(int group, int machine) { 
    return group * 253 + (machine - 2) + 1; 
} 
0

Et à ce sujet?

function getid (int g, int m) { 
    return g * (254 - 1) + m - 1; 
} 

Je pense que c'est vrai? Simplifié à:

function getid (int g, int m) { 
    return g * 253 + m - 1; 
} 

IE

2 * 253 + 3 = 508 
2 * 253 + 5 = 510 
Questions connexes