maksimum 2 tekrar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
droxee
Üye
Mesajlar: 86
Kayıt: 15 May 2009 04:29

maksimum 2 tekrar

Mesaj gönderen droxee »

s.a.
delphi 7 kullanıyorum 1 ile 106 arasında rastgele 52 sayı oluşturmak istiyorum fakat oluşturulan bu sayıların en fazla iki tekrarı olmalı

Kod: Tümünü seç

button1.click()
var
x,i:integer;
begin
for i:=1 to 106 do
begin
x:=Randomrange(1,52);
memo1.lines.add(inttostr(x));
end;
şeklinde yazdığım kod ikiden fazla tekrar yaptırabiliyor bunu nasıl aşarım??
Kullanıcı avatarı
badkursat
Üye
Mesajlar: 84
Kayıt: 03 Mar 2014 08:58

Re: maksimum 2 tekrar

Mesaj gönderen badkursat »

RandomRange ne işe yarıyo bilmiyorum ama tahminimce 1 ile 52 arasında bir sayı üretiyor. Eğer öyleyse her sayıdan 2 tane üretse toplamda 104 sayı eder 2 tane sayı zaten 2 den fazla tekrarlanmak zorunda olmazmı? Aslında 'for 1 to 52' ve 'RandomRange(1,106)' mı yazmak istedin acaba?
Eğer öyleyse şöyle bişi deneyebilirsin. Tabi bu tekrarsız olur biraz oynayıp en fazla 2 tekrarlı da yapabilirsin.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  x,i:integer;

  function Dublicate(x:Integer):Boolean;
  var j : Integer;
  begin
    For j := 0 To Memo1.Lines.Count-1 do
      if SameText(Trim(Memo1.Lines[j]),Trim(IntToStr(x))) Then Result := True Else Result := False;
  end;
begin
  Memo1.Clear;
  i := 1;
  repeat
    x:=Randomrange(1,106);
    if Not Dublicate(x) Then
      begin
        memo1.lines.add(inttostr(x));
        Inc(i);
      end;
  until i = 53;
end;
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: maksimum 2 tekrar

Mesaj gönderen Lord_Ares »

Bence başta bu işlem için ürettiğim tüm sayıları tutabileceğin array bir değişken tanımla. Ardında Sayaç adında integer değişkeni oluştur. Rastgele ürettiğin bu sayıları bu array değişkenin içine ekle , eklerken array içindeki sayıları bir döngü ve if yapısı ile kontrol et. Eğer aynı sayı varsa sayıcı bir arttır. Son olarak tek yapman gereken eğer sayac>2 den başka sayı üret dersin eğer küçükse 2 den memoya ekle dersin.
Cevapla