Страницы

Поиск по вопросам

пятница, 7 июня 2019 г.

Инверсия промежутка в массиве

На досуге познаю Pascal, и делаю разные манипуляции с массивами. Итак, в голову пришла идея сделать инверсию элементов (ОТ и ДО (элементы выбираются с клавиатуры)), делаю это все через процедуру
Например, имеется массив
1 2 3 4 5 6 7 8 9 10
Задача в том, чтобы юзер выбрал два элемента, и этом промежутке произошла инверсия, например: Ввод с клавиатуры элемент 5 и элемент 9, в итоге должно получиться, так:
1 2 3 4 9 8 7 6 5 10
Пытался делать так, но не понимаю, почему-то не получается, что-то я упускаю
const N = 100;
var count: integer; A: array[1..N] of integer;
procedure arrayReverse(p, s: integer); var i, x: integer; begin if p < s then for i := low(A) to count do begin x := a[p]; A[p] := A[s]; A[s] := x; end; end;
begin var p, s: integer; write('Кол-во элементов в массиве: '); readln(count);
for var i := 1 to count do A[i] := i;
write('Введите 1: '); read(p); write('Введите 2: '); read(s);
arrayReverse(p, s);
for var i := low(A) to count do write(A[i], ' '); end.


Ответ

for i := 0 to (s - p) div 2 do begin x := A[p + i]; A[p + i] := A[s - i]; A[s - i] := x; end;

Комментариев нет:

Отправить комментарий