как изменить оператор if на переключатель

0

как изменить следующий код из оператора if на коммутатор. можно увеличить скорость [0] в соответствии с приведенной ниже последовательностью (0,0,0,1,1,1,2,2,2,2), переменный узел имеет объект типа.

if (node->speed[0] > system->velocity)
    node->speed[0] = pSystem->velocity;
else if (node->speed[0] < pSystem->nVelocity)
    node->speed[0] = pSystem->nVelocity;
if (node->speed[1] > pSystem->velocity)
    node->speed[1] = pSystem->velocity;
else if (node->speed[1] < pSystem->nVelocity)
    node->speed[1] = pSystem->nVelocity;
if (node->speed[2] > pSystem->velocity)
    node->speed[2] = pSystem->velocity;
else if (node->speed[2] < pSystem->nVelocity)
    node->speed[2] = pSystem->nVelocity; 
  • 0
    Переключатель, я так не думаю, но цикл for может помочь.
  • 0
    хорошо, как использовать цикл for, в любом случае, чтобы сделать код лучше
Показать ещё 1 комментарий
Теги:
if-statement
switch-statement

2 ответа

1

Нет никакого значимого способа сделать switch на сравнения, но я бы переписал что-то вроде этого (предполагая, что ваша "система" в первой строке должна быть фактически "pSystem"):

int clamp(int x, int min, int max)
{
    if (x < min)
        return min;
    if (x > max)
        return max;
    return x;
}

for (int i = 0; i<3 ; ++i)
  node->speed[i] = clamp(node->speed[i], pSystem->nVelocity, pSystem->velocity);

Замечание: похоже, вы переключили значения "скорость" и "скорость".
Velocity - это вектор и имеет направление и величину, а скорость - скаляр - величина скорости.

0

он действительно не подходит для оператора switch, но подходит для цикла цикла.

for (int i = 0; i<3 ; ++i)
  if (node->speed[i] > system->velocity)
     node->speed[i] = pSystem->velocity;
  else if (node->speed[i] < pSystem->nVelocity)
     node->speed[i] = pSystem->nVelocity;
  • 1
    Код OP имеет system только один раз, а pSystem одиннадцать раз. Только ОП может сообщить нам, является ли это преднамеренным или опечаткой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню