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.
Пожалуйста помогите мне доделать этк прогу.


Shell   (2006-11-27 13:59:00) [21]

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


alex810   (2006-11-27 13:56:00) [22]

Удалено модератором


Cawa   (2006-11-27 13:55:00) [23]

Удалено модератором


alex810   (2006-11-27 13:52:00) [24]

Удалено модератором


Steep   (2006-11-27 13:49:00) [25]

Удалено модератором


Cawa   (2006-11-27 13:49:00) [26]

т.е. из тобой приведенного кода вынести

for k:=1 to SIZE do writeln(a[k]);

из циклов.


Cawa   (2006-11-27 13:47:00) [27]

ссори вот так

for i:=1 to SIZE-1 do
begin
min:=i;
for j:=i+1 to SIZE do
if a[j] < a [min] then min:=j;
buf:=a[i]; a[i]:=a[min]; a[min]:=buf;
end;
for k:=1 to SIZE do writeln(a[k]);
readln;


Cawa   (2006-11-27 13:45:00) [28]

попробу так сортировать

for i:=1 to SIZE-1 do
begin
min:=i;
for j:=i+1 to SIZE do
begin
if a[j] < a [min] then min:=j;
buf:=a[i]; a[i]:=a[min]; a[min]:=buf;
end;
end;
for k:=1 to SIZE do writeln(a[k]);
readln;


Shell   (2006-11-27 13:45:00) [29]

Да не доглядел, но если поставить тип real то возникнит куча ошибок которые я не знаю как испровлять, а мне обязательно нужны числа от -1000 до 1000


alex810   (2006-11-27 13:45:00) [30]


> a:array[1..SIZE] of integer;
> так почему-же
> a[i]:=t-1000;
> может быть отрицательное?

отрицательное число тоже может быть целым


Андрей Сенченко   (2006-11-27 13:44:00) [31]

Shell   (27.11.06 13:42) [23]

Ошибку Тебе назвали в [22].
Как-нибудь нам увидеть "большое количество цифр" можно ?


Steep   (2006-11-27 13:44:00) [32]

почему for i:=1 to SIZE-1
у тебя ж массив не с 0?


umbra   (2006-11-27 13:43:00) [33]

2 Shell   (27.11.06 13:39) [18]

> но программа не работает

а скомпилировать? а запустить? :)


Shell   (2006-11-27 13:42:00) [34]

Нет просто скажите где ошибка.прога запускается и выдаёт очень большое кол-во цифр


Steep   (2006-11-27 13:42:00) [35]

a:array[1..SIZE] of integer;
так почему-же
a[i]:=t-1000;
может быть отрицательное?


Андрей Сенченко   (2006-11-27 13:40:00) [36]

Удалено модератором


alex810   (2006-11-27 13:40:00) [37]

Удалено модератором


Steep   (2006-11-27 13:39:00) [38]

Короче хорош флудить...
давайте лучше помогать кому-нить...


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

Посмотрите вроде правильно сделал, но программа не работает
uses crt;
const
SIZE=20;
var
a:array[1..SIZE] of integer;
min,t:integer;
j:integer;
buf:integer;
i,k:integer;
begin
clrscr;
randomize;
t:=0;
for i:=1 to size do begin
t:=random(2000);
a[i]:=t-1000;
writeln(a[i]:2)
end;

for i:=1 to SIZE-1 do
begin
min:=i;
for j:=i+1 to SIZE do if a[j] < a [min]
then min:=j;
buf:=a[i]; a[i]:=a[min]; a[min]:=buf;
for k:=1 to SIZE do writeln(a[k]);
end;
readln;
end.


alex810   (2006-11-27 13:37:00) [40]

Удалено модератором


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

Наверх

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