Сдвинуть массив циклически на один элемент влево - Turbo Pascal
Формулировка задачи:
Дан массив целых чисел.Сдвинуть его циклически на один элемент влево
Решение задачи: «Сдвинуть массив циклически на один элемент влево»
textual
Листинг программы
uses crt; const n=10; var a,b:array[1..n] of integer; i,j,k,r:integer; BEGIN clrscr; for i:=1 to n do a[i]:=random(10)+3; for i:=1 to n do write(a[i]:4); writeln; write('На сколько хотите сдвинуть :'); read(k); for i:=1 to k do begin for j:=1 to n do if (j=1) then r:=a[j] else a[j-1]:=a[j]; a[n]:=r; end; writeln; writeln; for i:=1 to n do write(a[i]:4); readkey; END.
Объяснение кода листинга программы
- Создаётся массив
a
типаarray[1..n] of integer
, гдеn
- это константа, равная 10. - Заполняется циклом
for i:=1 to n do
-a[i]:=random(10)+3;
. Здесь используется функцияrandom(10)+3
, которая генерирует случайное число от 0 до 9 и добавляет к нему 3, чтобы получить число в диапазоне от 3 до 9. Это число затем присваивается элементу массиваa[i]
. - Выводится содержимое массива с помощью цикла
for i:=1 to n do write(a[i]:4);
и функцииwriteln
. - Пользователю предлагается ввести, на сколько он хочет сдвинуть массив. Введенное значение сохраняется в переменной
k
. - Используется цикл
for i:=1 to k do
-begin
-a[j-1]:=a[j];
-a[n]:=r;
. Здесь происходит сдвиг элементов массива. Если индекс элемента равен 1, то его значение присваивается переменнойr
, если индекс больше 1, то значение элемента присваивается предыдущему элементу. Значение последнего элемента массива (a[n]
), которое было сдвинуто в начало массива, присваивается переменнойr
. - Выводится содержимое массива с помощью цикла
for i:=1 to n do write(a[i]:4;
и функцииwriteln
. - Выводится сообщение
readkey;
, чтобы пользователь мог нажать любую клавишу, прежде чем программа завершится.