Dizi sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cebeser
Üye
Mesajlar: 34
Kayıt: 17 Mar 2004 02:38
Konum: istanbul

Dizi sorunu

Mesaj gönderen cebeser »

aşağıda verdiğim kodlar;
[Error] Unit1.pas(36): '(' expected but '[' found
hatası veriyor.
nerde hata yaptım? lütfen aydınlatın beni.
sağlıcakla...


procedure TForm1.Button1Click(Sender: TObject);
var
dizi : array[1..20,1..20,1..20] of integer;
a,i,x : integer;
begin
randomize;
i := 1;
x := 1;
repeat
a := random(20)
until for x := 1 to 20 do a := dizi[1,x];
end;
CE
Kullanıcı avatarı
feinpus
Üye
Mesajlar: 214
Kayıt: 17 Kas 2003 04:37
Konum: İstanbul
İletişim:

Mesaj gönderen feinpus »

sanırım 3'lü bir array oluşturup döngü içerisinde 2'li olarak yazmandan kaynaklanabilir.

until for x := 1 to 20 do a := dizi[1,x,?];
Oldeye Software
http://www.oldeye.com
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

until for x := 1 to 20 do a := dizi[1,x];
burda bir gariblik var sanki
until ile ; arasında boolean ifade olmalı
ÜŞENME,ERTELEME,VAZGEÇME
cebeser
Üye
Mesajlar: 34
Kayıt: 17 Mar 2004 02:38
Konum: istanbul

galiba

Mesaj gönderen cebeser »

gkimirti yazdı:until for x := 1 to 20 do a := dizi[1,x];
burda bir gariblik var sanki
until ile ; arasında boolean ifade olmalı
peki bu sorunu nasıl halledebilirim? ya da yerine ne koyabilirim?
CE
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

yapmak isteidigin tam olarak ne
yani nasıl bir algoritma kurman lazım
ÜŞENME,ERTELEME,VAZGEÇME
cebeser
Üye
Mesajlar: 34
Kayıt: 17 Mar 2004 02:38
Konum: istanbul

yapmak istediğim

Mesaj gönderen cebeser »

sıkı durun anlatıyorum:
random olayı ile 50'ye kadar bir sayı tutmayı, her defasında da farklı bir sayı tutmayı, dolayısı ile 50.random sayıda 1-50 arasındaki tüm sayıların seçilmiş olmasını sağlamak istiyorum.

bunu; üretilen sayıyı dizideki diğer elemanlarla karşılaştırarak, eğer dizide varsa tekrar sayı üretmesi yoksa diziye eklemesi yoluyla yapmak istedim.

son geldiğim aşama bu işte...

yardım ederseniz sevinirim. :)
CE
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

normalde cevapta kod un tamamını yazmam ama bir istisna oldu bu

Kod: Tümünü seç

procedure TfrmMain.Button1Click(Sender: TObject);
  function DizideAra(val: Integer; d: array of Integer): Boolean;
  var
    i: Integer;
  begin
    result := False;
    for i := 1 to 50 do
      if d[i] = val then
      begin
        result := True;
        exit;
      end
  end;

var
  d: array[1..50] of Integer;
  i, val: Integer;
begin
  for i := 1 to 50 do
    d[i] := 0;

  for i := 1 to 50 do
  begin
    repeat
      val := Random(50);
      sleep(1);
      if val = 0 then
        continue;
    until not DizideAra(val, d);
    //diziye ekle
    d[i] := val;
  end;
  //dizimiz tamamdır

end;
ÜŞENME,ERTELEME,VAZGEÇME
cebeser
Üye
Mesajlar: 34
Kayıt: 17 Mar 2004 02:38
Konum: istanbul

yess

Mesaj gönderen cebeser »

çözüm için teşekkürler ama yazdığın kodların bir kısmını anlayabilecek kapasitede değilim bu da biline...
CE
Cevapla