
Другие языки программирования и технологии
вопрос про массив одномерный C++ (вопрос отредактирован)
вот маччив, по условию сдвижение происходит на число N влево циклически, как сделать чтобы он сдвигался вправо на чсилоN????

#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;
}
}
}
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;
}
}
}
1. пипец фонты, код лучше на pastebin.com выкладывать
2. вот здесь, наверное: b[ i ] = a[(int)fmod( i + n, k ) ]
3. массив не сдвигается. создается новый путем сдвига старого, но не более
2. вот здесь, наверное: b[ i ] = a[(int)fmod( i + n, k ) ]
3. массив не сдвигается. создается новый путем сдвига старого, но не более
Похожие вопросы
- Вопрос по массивам на C++.
- Как правильно задать одномерный массив в C++?
- Всем привет. Никак не могу понять динамически массивы в C++.
- Найти элементы, принадле-жащие и тому и другому массивам на C++
- Как описать и использовать динамический массив в C++
- Нужно перемешать массив на C++. Есть массив, его нужно случайным образом перемешать. Нужен именно КОД, а не алгоритм
- Вопрос про массивы в паскале
- Как правильно присвоить строку двойному массиву СИ. Спасибо! Вопрос внутри
- Как задать двумерный массив на C#, чтобы значения можно было писать при запуске программы?
- Каковы преимущества и недостатки связных списков по сравнению с массивами в C++