Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 22.10.2019
Сообщений: 43

Написать функцию, которая циклически сдвигает одномерный массив вправо или влево на указанное число позиций.

16.12.2020, 13:11. Показов 5719. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию, которая циклически сдвигает одномерный массив вправо или
влево на указанное число позиций. Сдвиг также должен быть кольцевым, то есть
те элементы, которые уходят вправо или влево за пределы массива, должны
помещаться с другого его конца.
Например, дан массив:
1 2 3 4 5 6
Кольцевой сдвиг вправо на 2 единицы:
5 6 1 2 3 4
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2020, 13:11
Ответы с готовыми решениями:

Написать программу, которая сдвигает циклически вправо на заданное число позиций элементы массива
Написать программу, которая сдвигает циклически вправо на заданное число позиций элементы массива.

Написать функцию, которая циклически сдвигает одномерный массив вправо или влево на указанное число позиций
Написать функцию, которая циклически сдвигает одномерный массив вправо или влево на указанное число позиций. Сдвиг также должен быть...

Написать и протестировать функцию shift_l(mas,n,k), которая циклически сдвигает массив длины n влево на k позиций.
Помогите ребят!!!!препод задачи задачи для аттестации,сделал фактически все,кроме этой: Написать и протестировать функцию...

25
0 / 0 / 0
Регистрация: 22.10.2019
Сообщений: 43
16.12.2020, 16:10  [ТС]
Студворк — интернет-сервис помощи студентам
Спасибо, а эту знаете как?
Найти сумму и количество всех двухзначных чисел, у которых сумма цифр кратная 5
0
16.12.2020, 18:19

Не по теме:

Хотел ответ в стиле PABC.NET дать. Но не успел… Работа отвлекла.
Чую — намаялся бы потом с таким TC-ом :–)

0
 Аватар для canadamoscow
1179 / 430 / 194
Регистрация: 23.03.2020
Сообщений: 1,021
Записей в блоге: 1
16.12.2020, 18:26
Pascal
1
2
3
4
5
6
7
8
9
10
11
Function LR(a: array of integer; k: integer): array of integer;
begin
  var n := a.Count;
  k := k mod n + if k < 0 then n else 0;
  Result := a?[n-k:] + a[:n-k];
end;
 
begin
 var a := ReadlnString('Введите элементы массива через пробел:').toIntegers;
 LR(a, ReadlnInteger('Сдвиг на:')).Println
end.
0
 Аватар для Sun Serega
2357 / 1460 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
16.12.2020, 18:37
Цитата Сообщение от canadamoscow Посмотреть сообщение
k mod n + if k < 0 then n else 0
(k-1) mod n + 1
0
 Аватар для canadamoscow
1179 / 430 / 194
Регистрация: 23.03.2020
Сообщений: 1,021
Записей в блоге: 1
16.12.2020, 18:51
Цитата Сообщение от Sun Serega Посмотреть сообщение
(k-1) mod n + 1
не об этом речь.
Code
1
2
3
4
##
var (n, k) := (10, -12);
(k mod n + if k < 0 then n else 0).Println; //8 
((k-1) mod n + 1).Println; //-2
Если цель избавиться от a?[n-k:] (вопроса), то не поможет, т.к. тогда в случае ввода сдвига = 0, все равно будет ошибка
0
 Аватар для Sun Serega
2357 / 1460 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
16.12.2020, 19:28
Нет, вы таки в правильную сторону думали. У вас неправильно используется безопасный срез. Его правильно использовать только тогда, когда вы ожидаете что индекс выйдет за пределы и вам надо автоматически сдвинуть его в допустимые границы (что делает .Clamp, но без лишний телодвижений).

Иначе - это свидетельствует о том что вы ленитесь внимательно разобраться в чём то типа ошибок единицы (как в данном случае).
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
function LR(a: array of integer; k: integer): array of integer;
begin
  var n := a.Count;
  k := (k-ord(k>=1)) mod n + if k<1 then n else 1;
  Result := a[n-k:] + a[:n-k];
end;
 
begin
  var a := ReadlnString('Введите элементы массива через пробел:').ToIntegers;
//  var a := |1,2,3|;
  LR(a, ReadlnInteger('Сдвиг на:')).Println
end.
Добавлено через 3 минуты
Ну, или, лучше и не пытаться прикрутить общий алгоритм и к положительным, и к отрицательным...
Pascal
1
2
3
  k := if k < 1 then
    k mod c + c else
    (k-1) mod 3 + 1;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2020, 19:28

Циклический сдвиг списка вправо или влево на указанное число позиций
def func(l, n): return l + l try: s=input('Введите список чисел через пробел: ') l = list(map(int, s.split())) if...

Составить 2 функции. Одна из функций циклически сдвигает массив длины N вправо на k позиций, а другая - на k позиций вле
Составить 2 функции. Одна из функций циклически сдвигает массив длины N вправо на k позиций, а другая - на k позиций влево. 1. Составить...

написать программу, которая введен с клавиатуры двумерный массив циклически сдвигает на k позиций
Помогите пожалуста написать программу, которая введен с клавиатуры двумерный массив циклически сдвигает на k позиций (k вводится с...

Напишите функцию , которая циклически сдвигает х вправо на 1 позицию
Тема Побитовые операторы Напишите функцию , которая циклически сдвигает х вправо на 1 позицию. При этом младший разряд ...

Элементы массива циклически сдвинуты на k позиций влево или вправо.
const n=100; var x:array of real; Элементы массива циклически сдвинуты на k позиций влево или вправо.


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru