Помощь - Поиск - Пользователи - Календарь
Полная версия: развернуть положительные последовательности
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
sembler
Господа помогите, плиз.
Необходимо во всех последовательностях положительных чисел изменить порядок элементов на противоположный
volvo
Поконкретнее можно? Последовательность может содержать отрицательные числа, и нужно разворачивать положительные подпоследовательности? Или числа в ней содержатся только положительные, и разворачивать надо всю последовательность целиком?
sembler
Извиняюсь. Последовательность содержит как положительные так и отрицательные числа и разварачивать надо положительные подпоследовательности
volvo
Тогда вот так:
const
len = 21;
arr: array[1 .. len] of integer =
(1, 2, 3, 4, 5, -6, 7, 8, 9, 10,
11, 12, 13, -14, 15, 16, 17, 18, 19, 20, 21);

procedure print;
var i: integer;
begin
for i := 1 to len do
write(arr[i]:4);
writeln
end;

var
i, j, T: integer;
start, finish: integer;
begin
print;

i := 1;
while i <= len do begin
while(arr[i] < 0) and (i <= len) do inc(i);

start := i; finish := i;
while (arr[i] > 0) and (i <= len) do inc(i);
finish := pred(i);
for j := 1 to (finish - start) div 2 do begin
T := arr[pred(start + j)];
arr[pred(start + j)] := arr[succ(finish - j)];
arr[succ(finish - j)] := T;
end;

while(arr[i] < 0) and (i <= len) do inc(i)
end;

print;
end.
sembler
Спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.