На языке Паскал Создать одномерный статический массив длиной, заданной константой. Дружественный диалог с пользователем. Требуется сгруппировать положительные элементы массива в его начале, отрицательные – в конце с сохранением их порядка.
type IntegerArray = array1..ARRAYLENGTH1..ARRAY_LENGTH1..ARRAYLENGTH of Integer;
var arr: IntegerArray; i, temp, positiveIndex, negativeIndex: Integer;
begin // Заполнение массива writeln′Введитеэлементымассива:′'Введите элементы массива:'′Введитеэлементымассива:′; for i := 1 to ARRAY_LENGTH do begin write′arr[′,i,′]:′'arr[', i, ']: '′arr[′,i,′]:′; readlnarr[i]arr[i]arr[i]; end;
// Сортировка элементов positiveIndex := 1; negativeIndex := ARRAY_LENGTH;
while positiveIndex < negativeIndex do begin if arrpositiveIndexpositiveIndexpositiveIndex > 0 then positiveIndex := positiveIndex + 1 else if arrnegativeIndexnegativeIndexnegativeIndex < 0 then negativeIndex := negativeIndex - 1 else begin temp := arrpositiveIndexpositiveIndexpositiveIndex; arrpositiveIndexpositiveIndexpositiveIndex := arrnegativeIndexnegativeIndexnegativeIndex; arrnegativeIndexnegativeIndexnegativeIndex := 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 = array1..ARRAYLENGTH1..ARRAY_LENGTH1..ARRAYL ENGTH of Integer;
var
arr: IntegerArray;
i, temp, positiveIndex, negativeIndex: Integer;
begin
// Заполнение массива
writeln′Введитеэлементымассива:′'Введите элементы массива:'′Введитеэлементымассива:′;
for i := 1 to ARRAY_LENGTH do
begin
write′arr[′,i,′]:′'arr[', i, ']: '′arr[′,i,′]:′;
readlnarr[i]arr[i]arr[i];
end;
// Сортировка элементов
positiveIndex := 1;
negativeIndex := ARRAY_LENGTH;
while positiveIndex < negativeIndex do
begin
if arrpositiveIndexpositiveIndexpositiveIndex > 0 then
positiveIndex := positiveIndex + 1
else if arrnegativeIndexnegativeIndexnegativeIndex < 0 then
negativeIndex := negativeIndex - 1
else
begin
temp := arrpositiveIndexpositiveIndexpositiveIndex;
arrpositiveIndexpositiveIndexpositiveIndex := arrnegativeIndexnegativeIndexnegativeIndex;
arrnegativeIndexnegativeIndexnegativeIndex := temp;
positiveIndex := positiveIndex + 1;
negativeIndex := negativeIndex - 1;
end;
end;
// Вывод отсортированного массива
writeln′Положительныеэлементывначале,отрицательныевконце:′'Положительные элементы в начале, отрицательные в конце:'′Положительныеэлементывначале,отрицательныевконце:′;
for i := 1 to ARRAY_LENGTH do
write(arr[i], ' ');
readln;
end.