Поменять местами отрезки массива - Pascal ABC

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

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

Есть массив состоящий из n элементов.Массив разделили на 2 неравных отрезка(не сказано какой из них больше).Количество элементов в первом отрезке - m. Как поменять отрезки местами(второй отрезок в начало,а первый на место второго) без использования доп массива?

Решение задачи: «Поменять местами отрезки массива»

textual
Листинг программы
uses crt;
const max=100;
var a:array[1..max] of integer;
    n,i,j,m:byte;
    x:integer;
begin
clrscr;
randomize;
repeat
write('Размер массива n=');
readln(n);
until n in [1..max];
writeln('Исходный массив:');
for i:=1 to n do
 begin
  a[i]:=random(20)+1;
  write(a[i],' ');
 end;
writeln;
writeln;
repeat
write('Введите индекс для разделения массива от 2 до ',n-1,' m=');
readln(m);
until m in [2..n-1];
if m<n div 2 then
for i:=1 to m do
 begin
  x:=a[1];
  for j:=1 to n-1 do a[j]:=a[j+1];
  a[n]:=x;
 end
else
for i:=1 to n-m do
 begin
  x:=a[n];
  for j:=n downto 2 do a[j]:=a[j-1];
  a[1]:=x;
 end;
writeln('Перестановка частей масива:');
for i:=1 to n do
write(a[i],' ');
readln
end.

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

  1. Объявление переменных:
    • a: массив для хранения чисел (array[1..max] of integer);
    • n, i, j, m: переменные для проведения операций (byte);
    • x: временная переменная (integer).
  2. Инициализация массива случайными числами с помощью функции random(20)+1.
  3. Ввод размера массива от пользователя.
  4. Вывод исходного массива на экран.
  5. Ввод индекса для разделения массива от 2 до n-1.
  6. Проверка, если m меньше n/2, то выполнить перестановку элементов слева от разделителя.
  7. Если m больше или равно n/2, то выполнить перестановку элементов справа от разделителя.
  8. Вывод переставленного массива на экран.

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


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

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

13   голосов , оценка 3.923 из 5
Похожие ответы