На досуге познаю 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;
Комментариев нет:
Отправить комментарий