Сдвинуть последовательность - Pascal

Узнай цену своей работы

Формулировка задачи:

Дана последовательность из N (1 ≤ N ≤ 100000) целых чисел и число K (|K| ≤ 100000). Сдвинуть всю последовательность на |K| элементов вправо, если K – положительное и влево, если отрицательное, и вывести (не меняя элементы массива местами) Ограничение 1 секунда.
Листинг программы
  1. var n,i,m:integer;
  2. a:array[1..100000] of integer;
  3. begin
  4. readln(n);
  5. for i:=1 to n do
  6. read(a[i]);
  7. read(m);
  8. if m>=0 then begin
  9. m:=(m mod n);
  10. for i:=(n-m+1) to n do
  11. write(a[i], ' ');
  12. for i:=1 to (n-m) do
  13. write(a[i], ' ');
  14. m:=1;
  15. end;
  16. if m<0 then begin
  17. m:=abs(m);
  18. m:=(m mod n)+1;
  19. for i:=m to n do
  20. write(a[i], ' ');
  21. for i:=1 to m-1 do
  22. write(a[i], ' ');
  23. m:=1
  24. end;
  25. end.
Подскажите, как сделать рациональнее

Решение задачи: «Сдвинуть последовательность»

textual
Листинг программы
  1. var
  2.   n, k, i: Integer;
  3.   a: array[0..99999] of Integer;
  4. begin
  5.   Read(n); for i:=0 to n-1 do Read(a[i]);
  6.   Read(k); k:=k mod n;
  7.   for i:=Ord(k>=0)*n-k to n-1 do Write(' ',a[i]);
  8.   for i:=0 to Ord(k>=0)*n-k-1 do Write(' ',a[i]);
  9. end.

Объяснение кода листинга программы

  1. Объявляется переменная n типа Integer для сохранения размера последовательности.
  2. Объявляется переменная k типа Integer для хранения значения, на которое нужно сдвинуть последовательность.
  3. Объявляется переменная i типа Integer для использования в циклах.
  4. Объявляется массив a размером до 100000 целых чисел (Integer).
  5. Считывается значение n с помощью функции Read.
  6. В цикле от 0 до n-1 считывается последовательность чисел и сохраняется в массив a.
  7. Считывается значение k с помощью функции Read.
  8. Значение k изменяется на остаток от деления на n, чтобы учесть крайние случаи сдвига.
  9. В цикле от Ord(k>=0)*n-k до n-1 выводятся элементы последовательности, начиная с элемента, на который произошел сдвиг.
  10. В цикле от 0 до Ord(k>=0)*n-k-1 выводятся элементы последовательности, до элемента, на который произошел сдвиг.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы