Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Упорядочивание элементов массива, (переименовано) 
:(
    Опции темы
Рус
Дата 25.1.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.1.2009

Репутация: нет
Всего: нет



В матрице элементы массива разместить в следующем порядке: сначала все отрицательные, потом все положителные, в той последовательности в которой они распологаються в исходной матрице.
PM MAIL   Вверх
Metalex
Дата 25.1.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



Код
Program Perestanovka;
CONST n=10;
type mas=array [1..n] of integer;
Var A,B:mas; i,j:integer;
Begin
randomize;

for i:=1 to n do
A[i]:=random(50)-random(20);

for i:=1 to n do
write (A[i]:4);
writeln;

j:=1;

for i:=1 to n do
if A[i]<0
then begin
B[j]:=A[i];
j:=j+1;
end;

for i:=1 to n do
if A[i]>=0
then begin
B[j]:=A[i];
j:=j+1;
end;

for i:=1 to n do
write (B[i]:4);

readln
end.


А тему стоило бы назвать так:
Цитата
Перестановка элементов массива
 smile 


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
volvo877
Дата 26.1.2009, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Metalex, полный аналог твоей программы:
Код
Program Perestanovka;
CONST n=10;
type
  mas = array [1..n] of integer;
Var A, B: mas; i, j, t: integer;

Begin
  randomize;
  for i:=1 to n do
    A[i]:=random(50)-random(20);

  for i:=1 to n do write (A[i]:4);
  writeln;

  b := a;
  for i := 1 to n do
    for j := n downto i + 1 do
      if (b[j - 1] > 0) and (b[j] < 0) then begin
        t := b[j]; b[j] := b[j - 1]; b[j - 1] := t;
      end;
  for i:=1 to n do write (b[i]:4);
  readln;
end.
(можно использовать и более быстрый алгоритм сортировки, главное - известна функция сравнения - вместо того, чтобы проходить по исходному массиву дважды)...

Рус, массив и матрица - несколько разные вещи. Уточни, что именно ты имеешь в виду? Одномерный массив, или двумерную матрицу?
PM MAIL   Вверх
Рус
Дата 26.1.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.1.2009

Репутация: нет
Всего: нет



Цитата(volvo877 @ 26.1.2009,  11:44)
Metalex, полный аналог твоей программы:
Код
Program Perestanovka;
CONST n=10;
type
  mas = array [1..n] of integer;
Var A, B: mas; i, j, t: integer;

Begin
  randomize;
  for i:=1 to n do
    A[i]:=random(50)-random(20);

  for i:=1 to n do write (A[i]:4);
  writeln;

  b := a;
  for i := 1 to n do
    for j := n downto i + 1 do
      if (b[j - 1] > 0) and (b[j] < 0) then begin
        t := b[j]; b[j] := b[j - 1]; b[j - 1] := t;
      end;
  for i:=1 to n do write (b[i]:4);
  readln;
end.
(можно использовать и более быстрый алгоритм сортировки, главное - известна функция сравнения - вместо того, чтобы проходить по исходному массиву дважды)...

Рус, массив и матрица - несколько разные вещи. Уточни, что именно ты имеешь в виду? Одномерный массив, или двумерную матрицу?

...двумерная матрица...вот условие (уточненное)      В матрице все ее элементы разместить в следующем порядке: сначала все отрицательные, потом все положителные, в той последовательности в которой они распологаються в исходной матрице.          
PM MAIL   Вверх
volvo877
Дата 26.1.2009, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Рус @  26.1.2009,  10:56 Найти цитируемый пост)
...двумерная матрица...
В таком случае никто не мешает сделать вот такой трюк:
Код
Program Perestanovka;
CONST n=10;
type
  mas = array [1..n, 1..n] of integer;
Var
  A, B: mas; i, j, t: integer;
  m: array[1 .. sqr(n)] of integer absolute b;

Begin
  randomize;
  for i:=1 to n do for j := 1 to n do
    A[i,j]:=random(50)-random(20);

  for i:=1 to n do begin
    for j := 1 to n do write (A[i,j]:4);
    writeln;
  end;
  writeln;

  b := a;
  for i := 1 to sqr(n) do
    for j := sqr(n) downto i + 1 do
      if (m[j - 1] >= 0) and (m[j] < 0) then begin
        t := m[j]; m[j] := m[j - 1]; m[j - 1] := t;
      end;

  for i:=1 to n do begin
    for j := 1 to n do write (B[i,j]:4);
    writeln;
  end;
  writeln;
  readln;
end.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0434 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.