Array Karıştırmak

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
Kullanıcı avatarı
lovecraft
Üye
Mesajlar: 32
Kayıt: 03 Haz 2005 11:31
Konum: Kocaeli
İletişim:

Array Karıştırmak

Mesaj gönderen lovecraft »

yenidizi = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"];

elimde yenidizi şeklinde bir array var.ben bu arraydaki sayıların yerlerini her seferinde değiştirmek istiyorum.Delphide böyle bir kod mevcuttmu acaba?
Samet Poyraz
http://www.turkiyeburda.net
Poyraz Yazılım
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Re: Array Karıştırmak

Mesaj gönderen t-hex »

Random ile her seferinde 1 ile 13 arasında iki sayı üret, bu sayılardaki elemanları değiştir
Örneğin;
3, 7 geldiyse arrayde 3. ve 7. elemanı değiştir, bunu sürekli yaparsan yerleri değiştirmiş olursun.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Array Karıştırmak

Mesaj gönderen Battosai »

Delphiabout.com dan güzel bir örnek.....

Kod: Tümünü seç

procedure Shuffle(var aArray;aItemCount: Integer;aItemSize: Integer) ;
var
   Inx: Integer;
   RandInx: Integer;
   SwapItem: PByteArray;
   A: TByteArray absolute aArray;
begin
   if (aItemCount > 1) then
   begin
     GetMem(SwapItem, aItemSize) ;
     try
       for Inx := 0 to (aItemCount - 2) do
       begin
         RandInx := Random(aItemCount - Inx) ;
         Move(A[Inx * aItemSize], SwapItem^, aItemSize) ;
         Move(A[RandInx * aItemSize],A[Inx * aItemSize], aItemSize) ;
         Move(SwapItem^, A[RandInx * aItemSize],aItemSize) ;
       end;
     finally
       FreeMem(SwapItem, aItemSize) ;
     end;
   end;
end;
Yukardaki procedure un örnek kullanımı aşağıda...Sen kendine göre atamanı listbox a değilde diziye olacak şekilde değiştir....

Kod: Tümünü seç

procedure TForm2.Button1Click(Sender: TObject);
var
   a: array[1..14] of Integer;
   i: Shortint;
begin
   Randomize;
   for i := Low(a) to High(a)-1 do a[i] := i;
   Shuffle(a, High(a), SizeOf(Integer)) ;
   ListBox1.Clear;
   for i := 1 to High(a) - 1 do
     ListBox1.Items.Add(IntToStr(a[i])) ;

end;
Cevapla