Другие языки программирования и технологии

задачка про массив C++

вот такая вот задача Задан массив из k чисел. Сдвинуть элементы массива на n позиций циклически ВЛЕВО. вот тело программы http://pastebin.com/Uc9P4iCz Так вот сам вопрос : как изменить конкратно ЭТОТ текст программы чтобы сдвиг происходил на n позиций ВПРАВО? ? заранее спасибо
после строчки
n=(int)fmod(n,k);
вставить
n=k-n;
Зейнулла Зандаров
Зейнулла Зандаров
76 473
Лучший ответ
#include <iostream>
using namespace std;
void shift(int *, const size_t, const unsigned, const bool left = true);
void show(int * p, const size_t size);
int main() {
    const size_t N = 30;
    int a[N];
    for (size_t n = 0; n <= N; n++) a[n] = n + 1;
    show(a, N);
    shift(a, N, 10);
    show(a, N);
    shift(a, N, 10);
    show(a, N);
    shift(a, N, 10, false);
    show(a, N);
    shift(a, N, 10, false);
    show(a, N);
    cin.get();
    return 0;
}
void show(int * p, const size_t size) {
    for (size_t k = 0; k < size; k++) cout << p[k] << ' ';
    cout << endl;
}
void shift(int * p, const size_t size, const unsigned n, const bool left) {
    int temp;
    for (unsigned m = 0; m < n; m++) {        
        if (left) {
            temp = p[0];
            for (size_t k = 1; k < size; k++) p[k - 1] = p[k];
            p[size - 1] = temp;
        } else {
            temp = p[size - 1];
            for (size_t k = size - 1; k > 0; k--)
                p[k] = p[k - 1];
            p[0] = temp;
        }
    }
}
Аbdullа Mirzakasimov
Аbdullа Mirzakasimov
74 332
В 18-й строке:
b[ i ] = a[(int) fmod( i - n, k)];
P.S. а не проще вместо (int) fmod( i-n, k) написать (i - n) % k? К чему такие извращения?