На языке Паскал Создать одномерный статический массив длиной, заданной константой. Дружественный диалог с пользователем. Требуется сгруппировать положительные элементы массива в его начале, отрицательные – в конце с сохранением их порядка.
type IntegerArray = array[1..ARRAY_LENGTH] of Integer;
var arr: IntegerArray; i, temp, positiveIndex, negativeIndex: Integer;
begin // Заполнение массива writeln('Введите элементы массива:'); for i := 1 to ARRAY_LENGTH do begin write('arr[', i, ']: '); readln(arr[i]); end;
// Сортировка элементов positiveIndex := 1; negativeIndex := ARRAY_LENGTH;
while positiveIndex < negativeIndex do begin if arr[positiveIndex] > 0 then positiveIndex := positiveIndex + 1 else if arr[negativeIndex] < 0 then negativeIndex := negativeIndex - 1 else begin temp := arr[positiveIndex]; arr[positiveIndex] := arr[negativeIndex]; arr[negativeIndex] := temp; positiveIndex := positiveIndex + 1; negativeIndex := negativeIndex - 1; end; end;
// Вывод отсортированного массива writeln('Положительные элементы в начале, отрицательные в конце:'); for i := 1 to ARRAY_LENGTH do write(arr[i], ' ');
program PositiveNegativeSortingArray;
const
ARRAY_LENGTH = 10;
type
IntegerArray = array[1..ARRAY_LENGTH] of Integer;
var
arr: IntegerArray;
i, temp, positiveIndex, negativeIndex: Integer;
begin
// Заполнение массива
writeln('Введите элементы массива:');
for i := 1 to ARRAY_LENGTH do
begin
write('arr[', i, ']: ');
readln(arr[i]);
end;
// Сортировка элементов
positiveIndex := 1;
negativeIndex := ARRAY_LENGTH;
while positiveIndex < negativeIndex do
begin
if arr[positiveIndex] > 0 then
positiveIndex := positiveIndex + 1
else if arr[negativeIndex] < 0 then
negativeIndex := negativeIndex - 1
else
begin
temp := arr[positiveIndex];
arr[positiveIndex] := arr[negativeIndex];
arr[negativeIndex] := temp;
positiveIndex := positiveIndex + 1;
negativeIndex := negativeIndex - 1;
end;
end;
// Вывод отсортированного массива
writeln('Положительные элементы в начале, отрицательные в конце:');
for i := 1 to ARRAY_LENGTH do
write(arr[i], ' ');
readln;
end.