Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2018, 21:01   #1
Wellshumor
 
Регистрация: 18.09.2018
Сообщений: 3
По умолчанию Разместить элементы массива так,чтоб сначала шли все положительные числа,а потом-отрицательные, не создавая новый массив

Дан массив из n целых чисел. Не используя новый массив, нужно разместить элементы массива так, чтобы сначала шли все положительные числа, а потом - отрицательные. Помогите, пожалуйста
Wellshumor вне форума Ответить с цитированием
Старый 21.09.2018, 21:40   #2
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Сортировка "пузырьком", но условие для обмена соседних элементов чуть сложнее
Код:
((not (A[j - 1])) and (A[j])) < 0
FPaul вне форума Ответить с цитированием
Старый 07.10.2018, 10:41   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
const n=10;
var i,j,i0,z:integer;
    p:array[1..n] of integer;
begin
   Randomize;
   For i:=1 to n do
   begin
      p[i]:=-10+Random(21);
      Write(p[i]:3,'  ');
   end;
   Writeln;
   Writeln;
   i0:=1;
   For i:=1 to n do
      If p[i]>0 then
      begin
         z:=p[i];
         For j:=i downto i0+1 do
            p[j]:=p[j-1];
         p[i0]:=z;
         Inc(i0);
      end;
   For i:=1 to n do
      If p[i]<0 then
      begin
         z:=p[i];
         For j:=i downto i0+1 do
            p[j]:=p[j-1];
         p[i0]:=z;
         Inc(i0);
      end;
   For i:=1 to n do
      Write(p[i]:3,'  ');
   Writeln;
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 07.10.2018, 13:36   #4
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Или так (пузырьковая сортировка с усложнённым условием)
Код:
program test;

const
  N = 10;
type
  TArray = array[0..N - 1] of integer;
var
  i, j, temp: integer;
  A: TArray;
begin
  Randomize;
  for i := 0 to N - 1 do
  begin
    A[i] := -10 + Random(21);
    Write(A[i]: 4);
  end;
  writeln;

  for i := 0 to N - 1 do
  begin
    for j := N - 1 downto i + 1 do
      if ((not (A[j - 1])) and (A[j])) < 0 then
      begin
        temp := A[j];
        A[j] := A[j - 1];
        A[j - 1] := temp;
      end;
  end;

  for i := 0 to N - 1 do
    Write(A[i]: 4);
  writeln;
end.
FPaul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразовать массив так,что бы с начала располагались все положительные элементы, а потом все остальные kola1010 Паскаль, Turbo Pascal, PascalABC.NET 2 29.11.2016 09:33
Дана матрица, преобразовать так, чтобы в начале были положительные числа, а потом отрицательные(с сохранением порядка) Non_stop Общие вопросы C/C++ 2 23.11.2014 18:01
assembler. Задан массив А из N чисел. Преобразовать этот массив так, чтобы сначала шли четные числа, а потом – нечетные Transcend Помощь студентам 5 18.03.2013 11:42
В двумерном массиве, в каждоый строке сначала разместить положительные эелементы, потом отрицательные эел Катя) Паскаль, Turbo Pascal, PascalABC.NET 7 15.04.2011 22:32
В заданном массиве C(8) переставить элементы так щеб сначала шли все отрицатильние а затем положительные. basav1k Помощь студентам 2 26.05.2010 21:10