kkate4ka
@kkate4ka
глупенькая девочка

Как написать функцию циклического сдвига массива?

Реализовать функцию с массивом типа int, которая циклически сдвигает массив на заданное число позиций влево. Если задан отрицательный сдвиг, то функция бросает исключение.
Какие параметры передать в функцию, если из функции main я считываю сам массив и число сдвига?
  • Вопрос задан
  • 613 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Адрес массива, размер массива, сдвиг
Ответ написан
Комментировать
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Реализовать функцию типа int,

Это означает, что функция должна int возвращать? Если да, то зачем?
Какие параметры передать в функцию, если из функции main я считываю сам массив и число сдвига?

Так эти параметры и передавайте.
Можно ещё сделать так, как std::rotate реализована. Но это немного сложнее для новичков.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Алгоритм циклического сдвига массива "на месте" описан в "Жемчужинах программирования" Джона Бентли 2-е издание, Addison-Wesley, Питер, 2002, Глава 2, раздел 2.3.
Вот пример реализации. Там же видел реализацию того же алгоритма поприличней (в плане оформления кода), но сходу найти не могу.

Алгоритм сдвига не "на месте" (с выделением памяти под массив результата) простой, реализуется двумя операциями копирования памяти.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы