В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные — в конец с сохранением порядка следования.

Nqp Nqp    3   16.04.2019 23:00    10

Ответы
annaoroku3 annaoroku3  16.04.2019 23:00
var
a:array[1..100]of integer;
i,j,t,n:integer;
begin
randomize;
writeln('vvedite kol-vo elementov');
readln(n);
writeln('ishodnyj massiv');
for i:=1 to n do
begin
a[i]:=random(20)-10;
write(a[i],' ');
end;
writeln;
for i:=1 to n do
for j:=1 to n-1 do
if (a[j]>=0)and(a[j+1]<0)then
begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
writeln('novyj massiv');
for i:=1 to n do
write(a[i],' ');
readln;
end.
ПОКАЗАТЬ ОТВЕТЫ
korol23 korol23  18.01.2024 13:28
Хорошо, давайте посмотрим, как решить эту задачу.

1. Создадим одномерный массив с некоторыми числами. Давайте представим, что это массив a[], и у нас есть, например, следующие элементы:

a[] = {-3, 2, -7, 1, 4, -5, 6, -9}

2. Теперь нужно переместить все отрицательные элементы в начало массива. Для этого мы будем использовать два индекса: один для прохода от начала массива, другой – от конца.

3. Используем while-цикл, чтобы перебрать все элементы массива. Проверяем каждый элемент и, если он отрицательный, меняем местами с элементом, находящимся на позиции, указанной первым индексом (позиция начала массива).

В нашем случае:

a[] = {-3, 2, -7, 1, 4, -5, 6, -9}

Перебираем элементы поочередно:
-3 < 0 – отрицательное число, меняем местами с элементом на позиции 0:
a[] = {-3, 2, -7, 1, 4, -5, 6, -9}

2 > 0 – положительное число, ничего не меняем:
a[] = {-3, 2, -7, 1, 4, -5, 6, -9}

-7 < 0 – отрицательное число, меняем местами с элементом на позиции 1:
a[] = {-7, 2, -3, 1, 4, -5, 6, -9}

1 > 0 – положительное число, ничего не меняем:
a[] = {-7, 2, -3, 1, 4, -5, 6, -9}

-5 < 0 – отрицательное число, меняем местами с элементом на позиции 2:
a[] = {-7, -5, -3, 1, 4, 2, 6, -9}

-9 < 0 – отрицательное число, меняем местами с элементом на позиции 3:
a[] = {-7, -5, -3, -9, 4, 2, 6, 1}

4 > 0 – положительное число, ничего не меняем:
a[] = {-7, -5, -3, -9, 4, 2, 6, 1}

Теперь у нас все отрицательные числа находятся в начале массива.

4. Осталось переместить все положительные элементы в конец массива, с сохранением порядка следования.

Снова используем while-цикл, но меняем условие проверки на положительное число. Также нужно изменить позицию, с которой мы начинаем перебор - теперь это первый положительный элемент после отрицательных чисел.

В нашем случае это элемент на позиции 4, значение 4.

Перебираем элементы поочередно:
4 > 0 – положительное число, ничего не меняем:

a[] = {-7, -5, -3, -9, 4, 2, 6, 1}

2 > 0 – положительное число, ничего не меняем:
a[] = {-7, -5, -3, -9, 4, 2, 6, 1}

6 > 0 – положительное число, ничего не меняем:
a[] = {-7, -5, -3, -9, 4, 2, 6, 1}

1 > 0 – положительное число, ничего не меняем:
a[] = {-7, -5, -3, -9, 4, 2, 6, 1}

Теперь у нас все положительные числа находятся в конце массива.

5. Массив отсортирован! Теперь его порядок следования соответствует требованиям задачи.

a[] = {-7, -5, -3, -9, 4, 2, 6, 1}

Мы использовали два цикла while для перебора элементов и проверки, является ли число отрицательным или положительным. Затем мы меняли местами только те элементы, которые отличались от желаемого порядка.

Таким образом, мы успешно переместили отрицательные элементы в начало массива, а положительные — в конец, сохраняя порядок следования каждой группы чисел.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Другие предметы