Консультация № 138026
27.05.2008, 10:44
0.00 руб.
0 2 2
Добрый день.Помогите,пожалуйста,с решением задачи.Заранее большое спасибо Вам.
Дан массив отрицательных и положительных чисел с именем Х. Написать программу переноса отрицательных чисел в начало массива, а положительных в конец, сохраняя исходное взаимное расположение, как среди положительных чисел, так и среди отрицательных. При написании текста программ рекомендуется воспользоваться массивом У, как вспомогательным.

Обсуждение

Неизвестный
27.05.2008, 19:56
общий
это ответ
Здравствуйте, Хорост Андрей Викторович!
Решение Вашей задачи в приложении.
Выполняется по следующей схеме:
В цикле считываем значения массива X и тут же смотрим: если элемент массива X меньше нуля (отрицательный), то добавляем его в начало массива Y. Потом пробегаем цикл ещё раз для выявления положительных чисел. Их записываем после отрицательных в массив Y. Нули становятся в конец массива Y. Затем значение массива Y присваиваем массиву X.
Вот и всё. Удачи!

Приложение:
const n = 5; {количество элементов массива}var x,y: array [1..n] of integer; {собственно массивы} i,j: integer; {вспомогательные переменные}begin j:=1; for i:=1 to n do {в цикле} begin readln(x[i]); {считываем значение массива X} if x[i]<0 then {если оно отрицательное, то} begin y[j]:=x[i]; {записываем его в массив Y под номером j} inc(j); {j увеличиваем на единичку} end; end; for i:=1 to n do if x[i]>0 then {выявление положительных чисел} begin y[j]:=x[i]; {записываем значение элемента массива X в массив Y под номером j} inc(j); {увеличиваем j на единичку} end; x:=y; {значения массива Y присваиваем массиву X}end.
давно
Старший Модератор
31795
6196
30.05.2008, 12:52
общий
это ответ
Здравствуйте, Хорост Андрей Викторович!

Вариант без использования дополнительного массива.
В начало массива смещаются только отрицательные, остальные (положительные и ноль) смещаются в конец массива.
Удачи!

Приложение:
uses crt;const n=15;type Ta=array[1..n]of integer;var a:Ta; b,c:integer;procedure change(var a:Ta;b,c:integer); var d:integer; begin while (a[c-1]>=0)and(c>b)do begin {перестановка элементов массива} d:=a[c]; a[c]:=a[c-1]; a[c-1]:=d; dec(c); end; for b:=1 to n do begin {только для подсветки отрицательных чисел} if a[b]<0 then textcolor(15); {вывод} write(a[b]:4); textcolor(7); end; writeln; end;begin {массив формируется случайно} randomize; for b:=1 to n do begin a[b]:=random(50)-25; {подсвечиваем отрицательные элементы} if a[b]<0 then textcolor(15); {выводим элемент} write(a[b]:4); textcolor(7); end; writeln; {сортировка массива} for b:=1 to n-1 do for c:=b+1 to n do if (a[b]>=0) and (a[c]<0)then change(a,b,c); ReadKey;end.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа