Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как рассортировать?


Страницы:   1 2 3

Werka ©   (2006-11-27 12:44:00) 

Мне нужно написать  программу для сортировки массива из 20 целых чисел заполненные случайными образам в диапазоне от -1000 до 1000. Вывести его на экран. Упорядочить по возрастанию, и вывести на экран снова уже упорядоченный.
Я смог вывести его на экран, но как его упорядочить по возрастанию я не знаю вот то что у меня получилось:

uses crt;
var i,j:integer;
s,n,a:real;
M:array[1..20]of real;
begin
clrscr;
randomize;
a:=0;
for i:=1 to 20 do begin
a:=random(2000);
M[i]:=a-1000;
writeln(M[i]:2:0)
end;
Writeln('---');
for j:=1 to 20 do begin

end;
readln;
end.
Пожалуйста помогите мне доделать этк прогу.


Anatoly Podgoretsky   (2006-11-27 14:54:00) [1]

> alex810  (27.11.2006 14:44:54)  [54]

> Кто сказал что нужна двоичная

Автор сказал, в той теме, на которую я ссылаюсь.


Cawa   (2006-11-27 14:49:00) [2]

2 alex810 под двоичной имеется ввиду сортировка числовая по их конкретным значениям, а не по их строковым эквивалентам


alex810   (2006-11-27 14:44:00) [3]


> Вот теперь конкретный пример и сразу все ясно, сортировка
> работает, только это текстовая сортировка, а нужна двоичная.
>

Кто сказал что нужна двоичная. И как это переводить числа в двоичный код а потом двоичные числа сортировать???


Shell   (2006-11-27 14:43:00) [4]

Всем огромное спасибо!
Всё получилось, я наконец то до думал.


Cawa   (2006-11-27 14:40:00) [5]

Результат у меня верный что-то ты у себя намутил, вот код

const
size=5;
var i,j,min,k:integer;
s,n,a:integer;
M:array[1..20]of real;
buf:real;
begin

randomize;
a:=0;
for i:=1 to size do begin
a:=random(2000);
M[i]:=a-1000;
writeln(M[i]:2:0)
end;

Writeln('---');
for i:=1 to size-1 do
begin
min:=i;
for j:=i+1 to size do
if m[j]< m[min] then min:=j;
buf:=m[i];
m[i]:=m[min];
m[min]:=buf;
end;
for k:=1 to size do writeln(m[k]:2:0);

readln;
end.


Anatoly Podgoretsky   (2006-11-27 14:39:00) [6]

> Shell  (27.11.2006 14:25:49)  [49]

Вот теперь конкретный пример и сразу все ясно, сортировка работает, только это текстовая сортировка, а нужна двоичная.


alex810   (2006-11-27 14:38:00) [7]

Попробуй это

program mas;
uses crt;
const
SIZE=5;
var
a:array[1..SIZE] of integer;
k:integer;
i:integer;
changed:boolean;
buf:integer;
begin
clrscr;
for i:=1 to SIZE do a[i-1]:=(random(2000))-1000;
repeat
Changed:=FALSE;
for k:=1 to SIZE-1 do
if a[k] < a[k+1] then
begin
buf := a[k]; a[k] := a[k+1]; a[k+1] := buf;
changed := TRUE;
end;
until not changed;
for i:=1 to SIZE do
write(a[i],' ');
write('Maccив отсортирован.');
readkey;
end.

Результат у меня во всяком случае
722 0 -455 -595 -938 Maccив отсортирован.


Shell   (2006-11-27 14:25:00) [8]

>alex810 ©   (27.11.06 14:18) [46]
Массив должен быбираться случайным образом от -1000 до 1000 а не вводиться с клавиатуры.
>Cawa ©   (27.11.06 14:12) [42]
Нет всё равно не работает. Из начально массив выглядит так:
938
485
9
-227
-76
После сортировки он выглядит так
-227
-76
485
9

938
Хотя должен выглядить так
-227
-76
9
485

938


alex810   (2006-11-27 14:22:00) [9]

Я такого не говорил попросили на паскале


Palladin   (2006-11-27 14:21:00) [10]


> [46] alex810 ©

и что ты хочешь сказать это с delphi не совметимо?


alex810   (2006-11-27 14:18:00) [11]

Получай у меня все работает
program mas;
uses crt;
const
SIZE=5;
var
a:array[1..SIZE] of integer;
k:integer;
i:integer;
changed:boolean;
buf:integer;
begin
for i:=1 to SIZE do
readln(a[i-1] );
repeat
Changed:=FALSE;
for k:=1 to SIZE-1 do
if a[k] > a[k+1] then
begin
buf := a[k]; a[k] := a[k+1]; a[k+1] := buf;
changed := TRUE;
end;
until not changed;
for i:=1 to SIZE do
writeln(a[i]);
writeln('Maccив отсортирован.');
end.


Anatoly Podgoretsky   (2006-11-27 14:17:00) [12]

> Андрей Сенченко  (27.11.2006 13:35:15)  [15]

То же самое, переходите в конференцию Прочее и начинайте новую мегаветку


Shell   (2006-11-27 14:16:00) [13]

Прости не заметил, щас проверю


Anatoly Podgoretsky   (2006-11-27 14:16:00) [14]

> alex810  (27.11.2006 13:33:14)  [14]

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


Cawa   (2006-11-27 14:12:00) [15]

в [30] я уже давал верный вариант сортировки


Cawa   (2006-11-27 14:10:00) [16]

Writeln('---');
for i:=1 to size-1 do
begin
min:=i;
for j:=i+1 to size do
if m[j]< m[min] then min:=j;
buf:=m[i];
m[i]:=m[min];
m[min]:=buf;

end;
for k:=1 to size do writeln(m[k]:2:0);


alex810   (2006-11-27 14:06:00) [17]

ща поставлю паскаль и сделаю тебе прогу


Shell   (2006-11-27 14:03:00) [18]

Откамплиируй и зацени, они вы водятся такиеже как и изночально
uses crt;
const
size=5;
var i,j,min,k:integer;
s,n,a:integer;
M:array[1..20]of real;
buf:real;
begin
clrscr;
randomize;
a:=0;
for i:=1 to size do begin
a:=random(2000);
M[i]:=a-1000;
writeln(M[i]:2:0)
end;

Writeln('---');
for i:=1 to size-1 do
begin
min:=i;
for j:=i+1 to size do
begin
if m[i]< m[min] then min:=j;
buf:=m[i];
m[i]:=m[min];
m[min]:=buf;
end;
end;
for k:=1 to size do writeln(m[k]:2:0);

readln;
end.


Shell   (2006-11-27 14:02:00) [19]

Ничего подобнго сам попробуй


alex810   (2006-11-27 14:00:00) [20]


> Я не совсем пойму это место, мы находим самый маленьки член
> a[min]:=buf;
> Но на экран выводим изночальный массив
> for k:=1 to SIZE do writeln(a[k]);

Выводит уже отсортированный массив


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо