Skip to content

Instantly share code, notes, and snippets.

@nikitalarionov
Created January 26, 2019 19:05
Show Gist options
  • Save nikitalarionov/d06e9a1f2051d2400a95a0d4f23aff29 to your computer and use it in GitHub Desktop.
Save nikitalarionov/d06e9a1f2051d2400a95a0d4f23aff29 to your computer and use it in GitHub Desktop.
Rotate array to left by number of positions
// array_rotate.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include "pch.h"
#include <iostream>
using namespace std;
void left(int a[], unsigned N) {
// Запишем первый элемент массива во временную переменную
int temp = a[0];
for (int i = 0; i < N; i++) {
// Сделаем перестановку элементов с первого до последнего
a[i] = a[i + 1];
}
// Перезапишем последний элемент
a[N - 1] = temp;
}
void rotate(int a[], unsigned size, int shift) {
// Если число перестановок больше чем указанных
// Разделим сдвиг на размер и получим реальное число перестановок
// Например сдвиг 8, размер массива 6 = то реальное число сдвигов 2 (1.33 с округлением вверх)
int realShift = shift % size;
for (int i = 0; i < realShift; i++)
left(a, size);
}
void logArray(int a[], unsigned size) {
for (int i = 0; i < size; i++) {
cout << a[i];
}
cout << endl;
}
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6 };
int sizeOfA = sizeof(a) / sizeof(*a); // 6
rotate(a, sizeOfA, 8);
logArray(a, sizeOfA);
return 0;
}
// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
// Советы по началу работы
// 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
// 2. В окне Team Explorer можно подключиться к системе управления версиями.
// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
// 4. В окне "Список ошибок" можно просматривать ошибки.
// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment