![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как рассортировать?
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]);
Выводит уже отсортированный массив