sqrt(vx*vx+vy*vy)
(если оно не 0) и сдвигайте спрайт на vx, vy.vx*vx+vy*vy
может быть только 0,1 или 2. Заведите константный массив kScaleCoef[3] = {1, 1, sqrt(2)}
и потом делайте Sprite.Move(speed/kScaleCoef[vx*vx+vy*vy]*vx, speed/kScaleCoef[vx*vx+vy*vy]*vy);
std::vector<int> MakeArray();
void Print(const std::vector<int> array);
int* MakeArray(int *len);
void Print(int *array, int len);
// a[moved] увеличился.
tmp = a[moved];
for (i = moved+1; i < a.size() && a[i] < tmp; ++i) {
a[i-1] = a[i];
}
a[i-1] = tmp;
size
и потом проходитесь циклом до size по обеим строкам. Но ведь более короткой строки там просто нет - вы обращаетесь к не вашей памяти.