Показать сообщение отдельно
  #8  
Старый 21.03.2011, 00:17
Аватар для Pilot_Red
Pilot_Red Pilot_Red вне форума
Продвинутый
 
Регистрация: 01.11.2006
Адрес: Карелия
Сообщения: 702
Версия Delphi: D7
Репутация: 11581
По умолчанию

в общем алгоритм такой: тупо генерим 5 случайных чисел(в твоем примере от 0 до 447). сохраняем их в массив. этот массив отсортировывем. а потом собственно получаем диапазоны, то есть твои части))

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


Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  m:array[1..4] of integer;
  i,j,n,r2,r,temp:integer;
begin
   randomize;
   n:=4;
   r:=0;
   r2:=0;
for i:=1 to n-1 do
begin
  m[i]:=random(447);
    for j:=1 to i do
      if m[i]<m[j] then
      begin
        temp:=m[i];
        m[i]:=m[j];
        m[j]:=temp;
    end;
end;
 m[4]:=447;
 for i:=1 to n do
begin
r:=(m[i]-r2);
r2:=m[i];
m[i]:=r;
end;
form1.Caption:='';
for i:=1 to 4 do
 form1.Caption:= form1.Caption+inttostr(m[i])+';';
end;
Ответить с цитированием