как изменить следующий код из оператора 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;
Нет никакого значимого способа сделать 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 - это вектор и имеет направление и величину, а скорость - скаляр - величина скорости.
он действительно не подходит для оператора 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;
system
только один раз, а pSystem
одиннадцать раз. Только ОП может сообщить нам, является ли это преднамеренным или опечаткой.