Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2008, 18:30   #1
Constellation
Пользователь
 
Регистрация: 14.11.2007
Сообщений: 61
Вопрос Снова о массиве

Каким образом можно сформировать массив неповторяющихся чисел, используя значения из другого массива?
Constellation вне форума Ответить с цитированием
Старый 09.02.2008, 20:04   #2
WOLFak
Форумчанин
 
Аватар для WOLFak
 
Регистрация: 30.12.2007
Сообщений: 180
По умолчанию

или как random - ом сделать массив неповторяющихся чисел????
мне тоже надо
^_^
WOLFak вне форума Ответить с цитированием
Старый 09.02.2008, 20:42   #3
Format C:
Пользователь
 
Регистрация: 11.03.2007
Сообщений: 92
По умолчанию

Делал так:

Код:
Procedure TMainForm.NewShuffle;
Var
  I, Tmp: Integer;
  A: Array Of Boolean;
begin
  ShuffleList.Clear;
  SetLength(A, SetForm.FileList.Count);
  Randomize;

  For I:=0 To SetForm.FileList.Count-1 Do
    A[I]:=False;

  I:=0;
  Repeat
    Tmp:=Random(SetForm.FileList.Count);
    If Not A[Tmp] Then
    Begin
      A[Tmp]:=True;
      ShuffleList.Items.Add(IntToStr(Tmp+1));
      Inc(I);
    End;
  Until I=SetForm.FileList.Count;

  ShuffleList.ItemIndex:=0;
End;

Function TMainForm.PrevShuffle: Integer;
Begin
  If ShuffleList.ItemIndex>0 Then
  Begin
    ShuffleList.ItemIndex:=ShuffleList.ItemIndex-1;
    Result:=StrToInt(ShuffleList.Items.Strings[ShuffleList.ItemIndex]);
  End
  Else
  Begin
    NewShuffle;
    ShuffleList.ItemIndex:=ShuffleList.Count-1;
    Result:=StrToInt(ShuffleList.Items.Strings[ShuffleList.ItemIndex]);
  End;
End;

Function TMainForm.NextShuffle: Integer;
Begin
  If ShuffleList.ItemIndex+1<ShuffleList.Count Then
  Begin
    ShuffleList.ItemIndex:=ShuffleList.ItemIndex+1;
    Result:=StrToInt(ShuffleList.Items.Strings[ShuffleList.ItemIndex]);
  End
  Else
  Begin
    NewShuffle;
    Result:=0;
  End;
End;
Пояснения:
ShuffleList -ListBox на форме
SetForm.FileList - Отсюда берётся нужое чило значений
Функция PrevShuffle и NextShuffle возвращает предыдущее или следующее числао из списка, а если список исчерпан, то создают новый.
Format C: вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И снова Chart SunKnight Общие вопросы Delphi 5 08.02.2008 11:58
И снова Service! Shurik Hacker Общие вопросы Delphi 5 27.01.2008 21:36
И снова сервисы Баламут Win Api 3 13.12.2007 01:26
и снова Mdi Баламут Общие вопросы Delphi 1 28.11.2006 07:03