Четверг, 02.05.2024, 05:05

Delphi

Приветствую Вас Гость

Друзья сайта
Статистика

Сегодня были:
Самые активные пользователи

Меню сайта
Наш опрос
Чему уделять больше внимания?
Всего ответов: 64
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Pascal » Для новичков » отсортировать масив (Помогите)
отсортировать масив
sleepesДата: Понедельник, 24.03.2008, 15:08 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 0
Статус: Offline
нужно отсортировать одномерный масив таким образом

Преобразовать массив, расположив сначала все отрицательные, затем все положительные числа (порядок следования чисел внутри группы не изменять).

 
IvinДата: Понедельник, 24.03.2008, 15:41 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 46
Репутация: 0
Статус: Offline
sleepes, попробуй так:
l:=1;
for i:=1 to 10 do
if(a[i]<0)then
begin
q:=a[l];
a[l]:=a[i];
a[i]:=q;
l:=l+1;
end;

Должно работать, попробуй, только подставь свои переменные.

 
sleepesДата: Понедельник, 24.03.2008, 19:38 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 0
Статус: Offline
cry не работает
вроде нормально(отрицательные числа выносит на перед),
а вот в положительных числах меняет немного порядок(((

к примеру если взять масив такой 2 1 0 1 -5 , поидеи должно получиться -5 2 1 0 1, оно олучается по другому
-5 1 0 1 2

 
IvinДата: Вторник, 25.03.2008, 17:09 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 46
Репутация: 0
Статус: Offline
sleepes, вот держи, правда исходник на MIDletPascal. Думаю переделать будет не так уж и трудно:
program Vfcc;
var a,a1,a2:array[1..10]of integer;
l,j,i,q:integer;
begin
randomize;
for i:=1 to 10 do
a[i]:=random(10)-5;

for i:=1 to 10 do
drawText(''+a[i], 0, i*12);

l:=0;
j:=0;
for i:=1 to 10 do
if(a[i]<0)then
begin
l:=l+1;
a1[l]:=a[i];
end
else
begin
j:=j+1;
a2[j]:=a[i];
end;

for i:=1 to l+1 do
a[i]:=a1[i];
for i:=l+1 to 10 do
a[i]:=a2[i-l];

for i:=1 to 10 do
drawText(''+a[i], 16, i*12);
repaint;
delay(15000);
end.

 
sleepesДата: Четверг, 27.03.2008, 21:25 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 27
Репутация: 0
Статус: Offline
спс за помощь, прикольный выход нашел))), весьма оригинально dry
 
Crazy-x7Дата: Понедельник, 07.04.2008, 17:52 | Сообщение # 6
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
Мне тоже надо отсортировать массив, только по другому:
Найти минимальный элемент массива и поставить его на место последнего элемента, а последний -на место минимального (т.е. поменять местами последний и минимальный элементы).
 
IvinДата: Понедельник, 07.04.2008, 18:36 | Сообщение # 7
Admin
Группа: Администраторы
Сообщений: 46
Репутация: 0
Статус: Offline
Crazy-x7, вроде так

min:=1000;
for i:=0 to 10 do
begin
if(a[i]<min)then begin min:=a[i];j:=i; end;
end;
q:=a[10];
a[10]:=a[j];
a[j]:=q;

А вообще желательно и самим пробовать работать.

 
Crazy-x7Дата: Понедельник, 07.04.2008, 20:46 | Сообщение # 8
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
Немножко подправил алгоритм, и все ЗАРАБОТАЛО!!!! tongue
 
IvinДата: Вторник, 08.04.2008, 17:54 | Сообщение # 9
Admin
Группа: Администраторы
Сообщений: 46
Репутация: 0
Статус: Offline
Crazy-x7, молдодец! biggrin
 
Форум » Pascal » Для новичков » отсортировать масив (Помогите)
  • Страница 1 из 1
  • 1
Поиск: