Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 12.12.2015
Сообщений: 18

Осуществить циклический сдвиг элементов массива влево на k позиций

12.12.2015, 17:01. Показов 4272. Ответов 10

Студворк — интернет-сервис помощи студентам
Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево на k позиций.
Гуглю весь день, так толком ничего и не понял, помогите решить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2015, 17:01
Ответы с готовыми решениями:

Осуществить сдвиг элементов массива влево на K позиций
Дан массив размера N и целое число K (1 ≤ K &lt; N). Осуществить сдвиг элементов массива влево на K позиций (при этом AN перейдет в AN–K, AN–1...

Осуществить циклический сдвиг элементов одномерного массива на k позиций
работает правильно только если k=1 если больше то сдвиг делает правильно, но когда на место их переносит числа путает их, что не так? ...

Осуществить циклический сдвиг элементов массива вправо на k позиций
Решаю задачи на сервере одном, задание было &quot;Дан массив размера N ≥ 2 и число k (0 &lt; k &lt; N). Осуществить циклический сдвиг...

10
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
12.12.2015, 19:25
Осуществить циклический сдвиг массива на N элементов

Добавлено через 2 минуты
А задачка хоть и простая, но не совсем тривиальная. И для ее решения нужны некоторые базовые знания из теории чисел...
Впрочем, внизу этой страницы целый список...
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
12.12.2015, 19:39
Цитата Сообщение от Байт Посмотреть сообщение
базовые знания из теории чисел
зачем?можно k раз сдвинуть на один ,либо rotate )
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
12.12.2015, 20:05
Цитата Сообщение от Dimension Посмотреть сообщение
можно k раз сдвинуть на один
Честь, сударь, не позволит...
1
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
15.12.2015, 12:06
За 5 мин, без "целодневного" гугления и теории чисел :
C++
1
2
3
4
5
6
void mascopy(int *a, int n, int k) {
    int tmp[4],i;
    for (i=0;i<k;++i)       tmp[i]=a[i];
    for (i=k;i<n;++i)       a[i-k]=a[i];
    for (i=0;i<k;++i)       a[n+i-k]=tmp[i];
}
и что тут сложного?
Можно сделать без массива tmp, сдвигая на 1 позицию. По сложности то же самое.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
15.12.2015, 12:20
zer0mail, Великолепный код! Очень простой. Бредовенький, правда.
C++
1
2
int tmp[4],i;
for (i=0;i<k;++i)  tmp[i]=a[i];
А что происходит при k > 4, не расскажите?
Правда, в условии написано k < 5. Что тоже бред.
Все-таки логично было бы поставить и решить задачу в общем виде.
А при данных ограничениях, да - ей цена - ломанный грош, да и того жалко...

Добавлено через 2 минуты
Обычно у таких задач ставится условие - без дополнительных массивов. Т.к. с дополнительными массивами она тоже стоит недорого.
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
15.12.2015, 12:31
Цитата Сообщение от Байт Посмотреть сообщение
Правда, в условии написано k < 5. Что тоже бред
Обижаете, сударь. Бред или нет, но это - условие, в соответствии с которым написан код. Ценность тут равна ценности оценки/зачета.
Без условий и доп массивов:
C++
1
2
3
4
5
6
7
8
void mascopy(int *a, int n, int k) {
    int tmp,i;
    while(--k>=0) {
        tmp=a[0];
        for (i=1;i<n;++i)       a[i-1]=a[i];
        a[n-1]=tmp;
    }
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
15.12.2015, 12:37
Цитата Сообщение от zer0mail Посмотреть сообщение
Без условий и доп массивов:
Сдвигать k раз весь массив на 1 ? Помилуйте! Тогда надо кричать - "Ах, мама, зачем ты меня программистом родила!?"

Добавлено через 2 минуты
Цитата Сообщение от zer0mail Посмотреть сообщение
Ценность тут равна ценности оценки/зачета.
Так как для меня лично эта ценность = 0, этот топик меня интересует как любопытная задачка, допускающая оптимизацию + возможность побеседовать с интересными людьми
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
15.12.2015, 13:04
Цитата Сообщение от Байт Посмотреть сообщение
Так как для меня лично эта ценность = 0
Дык, я не для Вас писал, а для автора темы . Чтобы в следующий раз он не тратил день на гугление, а включал мозг и решал сам подобную задачу

Добавлено через 12 минут
Кстати, насчет "зачем родила". Думаю, при k=3 и n =100 (для примера) мой код отработает быстрее, чем Ваш по приведенной выше ссылке. А вариант с временным массивом тем более. Проверим?
0
Dimension
595 / 463 / 223
Регистрация: 08.04.2014
Сообщений: 1,710
15.12.2015, 13:08
даже свой код там нашел ,это я stl видать тогда мало знал ,есть крутая вещь
C++
1
rotate(a,a+k,a+n);
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
15.12.2015, 13:24
М-да. Проверить не получается - код не работает. Оказывается, "простой бредовый" код выполняет поставленную задачу, а "оптимизированный навороченный" - нет

Ну, хоть пообщались
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2015, 13:24
Помогаю со студенческими работами здесь

Осуществить циклический сдвиг элементов массива влево1|вправо2 на k позиций
Добрый день ребят, очень нужна Ваша помощь. Помогите решить задачу. Дан массив размера N и число k (0&lt;k&lt;5, k&lt;N). Осуществить...

Осуществить циклический сдвиг элементов массива влево на одну позицию
Помогите, пожалуйста, решить программы на си++, если не решу мне хана, заранее спасибо: Дан массив размера N. Осуществить циклический...

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – индекс максимального элемента
Помогите пожалуйста решить эту задачу, Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций,...

Осуществить циклический сдвиг массива вправо на m позиций
Разработать алгоритм и программу. Дан одномерный массив С размерностью 1хn (1&lt;=n&lt;=20). Элементы массива принимают значения от 0 до 255 и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru