Как создать функцию c # для преобразования из групп диапазонов чисел в продолжение чисел - PullRequest
1 голос
/ 23 мая 2009

у нас есть 6 групп по 253 машины в каждой,
, но каждая группа находится в диапазоне от машины № 2 до машины # 254,
и продолжает идентификаторы, представляющие каждую машину.

как в следующей таблице:


Групповой идентификатор машины
0 2-254 1-253

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


Я ищу c # простой способ написать функцию для преобразования из ID в группу компьютеров

пример: ID 508 - это группа № 2, машина № 3
(машина 507 - это
первая машина в группе 2, и поскольку она начинается с 2, вторая машина - это машина № 3)

а также наоборот
пример: если я получу параметры: группа № 2, машина № 5,
функция должна вернуть идентификатор 510
Как я могу это сделать?
Я пришел с формулой, но она не сработала
есть идеи?
спасибо

Ответы [ 2 ]

4 голосов
/ 23 мая 2009

Сначала вычтите одно из идентификатора, чтобы получить его на основе нуля, затем вы можете разделить его на группу и машину, и откорректировать номер машины в диапазоне 2-254, добавив два:

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

как две отдельные функции:

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

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

Чтобы получить идентификатор от группы и машины, вы делаете наоборот; вычтите два из номера машины, чтобы он стал нулевым, объедините их и добавьте один:

int GetId(int group, int machine) {
   return group * 253 + (machine - 2) + 1;
}
0 голосов
/ 23 мая 2009

А как насчет этого?

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

Я думаю, что это правильно? Упрощено до:

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

IE

2 * 253 + 3 = 508
2 * 253 + 5 = 510
...