PDA

Просмотр полной версии : [Вопрос] Как правильнее



_lizard
09.08.2016, 14:26
Нужно написать функцию, которая возвращает название ранга игрока по его организации и подразделении, попытался сделать разными способами, но некоторые меня смущают.

stock GetRangName(name[], orgid, memberid, ranid)
{
if(orgid == 1)
{
if(memberid == 1)
{
switch(rangid)
{
case 1: name = "Уборщик";
case 2: name = "Помошник";
case 3: name = "Редактор";
case 4: name = "...";
case 5: name = "Начальник";
}
}
else if(memberid == 2)
{
// ...
}
}
else if(orgid == 2)
{
// код аналогичный коду выше
}
return 1;
}


stock GetRangName(name[], orgid, memberid, ranid)
{
if(orgid == 1)
{
if(memberid == 1)
{
switch(rangid)
{
case 1: strmid(name, "Уборщик", 0, strlen("Уборщик"), sizeof(name));
case 2: strmid(name, "Помошник", 0, strlen("Помошник"), sizeof(name));
case 3: strmid(name, "Редактор", 0, strlen("Редактор"), sizeof(name));
case 4: strmid(name, "...", 0, strlen(".."), sizeof(name));
case 5: strmid(name, "Начальник", 0, strlen("Начальник"), sizeof(name));
}
}
else if(memberid == 2)
{
// ...
}
}
else if(orgid == 2)
{
// код аналогичный коду выше
}
return 1;
}

Какой из них более лучше? Буду рад, если предложите свой вариант

Profyan
09.08.2016, 14:28
Статический массив с названиями рангов мне кажется был бы куда удобнее и правильнее.

_lizard
09.08.2016, 14:33
Статический массив с названиями рангов мне кажется был бы куда удобнее и правильнее.

У меня 13 организаций, в 1-5 из них входят 3 подразделения (в каждом подразделении разные ранги), в 6-13 подразделений нет. Это надо трёхмерный массив как минимум делать, я просто не смогу не закосячить.

ziggi
09.08.2016, 14:53
Не бывает правильнее, бывает лучше для конкретной цели. Если перед тобой стоит цель добиться минимальной производительности, то 2 способ, если максимальной производительности - то тот, что назвал Profyan, а если тебе наплевать, то выбирай 1 способ.


У меня 13 организаций, в 1-5 из них входят 3 подразделения (в каждом подразделении разные ранги), в 6-13 подразделений нет. Это надо трёхмерный массив как минимум делать, я просто не смогу не закосячить.

Можно создать несколько двумерных.