Dizi içindeki aynı değerleri 1 kez yazsın istiyorum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Dizi içindeki aynı değerleri 1 kez yazsın istiyorum

Mesaj gönderen unalaygun »

Elimde bir dizi var diyelim

Dizi[0]=1
Dizi[1]=2
Dizi[2]=1
Dizi[3]=1

bu gibi durumda dizinin içinde 1,2 değerlerinin yani aynı değerlerin kalmasını istiyorum..

yani tam olarak Sql'in grup by ını bu yapan bir fonksiyon varmı hazır..
ya da nasıl yazabilirim.

tşkler.
derviş
Kullanıcı avatarı
MercilessTurk
Üye
Mesajlar: 94
Kayıt: 28 Eki 2005 10:14

Mesaj gönderen MercilessTurk »

Sanırım böyle bişey istiyorsun:

Kod: Tümünü seç

var
dizi: array[0..14] of integer=(1,2,3,131,5,3,2,1,10,131,4213,1,3,523,10);
unique_valued,cop: array of integer;
i,y,z:integer;
begin
Memo1.Lines.Clear;
setlength(cop,High(dizi)+1);
z:=Low(dizi);
cop[z]:=dizi[z];
for i:=Low(dizi) to High(dizi) do
begin
   Memo1.Lines.Add('dizi['+IntToStr(i)+']='+IntToStr(dizi[i]));
   for y:=Low(dizi) to z do
   begin

    if cop[y]=dizi[i] then
    break;
    if y=z then  begin
    Inc(z);
    cop[z]:=dizi[i];
    end;

    end;
end;

Memo2.Lines.Clear;
setlength(unique_valued,z+1);
for i:=Low(cop) to z do begin
unique_valued[i]:=cop[i];
Memo2.Lines.Add('unique_valued['+IntToStr(i)+']='+IntToStr(unique_valued[i]));
end;

end;  
Forma 2 memo koyman lazım.

Kolay gelsin.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Eğer bu problem için aklına birşey gelmediyse mantığı hakkında bir kaç öneri vereyim:
1-Sırayla tüm elemanları incele
2-İncelenen elemanı daha önceki elemanlarla kıyasla
3-Eğer aynı değeri bulmadıysa bu elemanı işleme al, bulduysa bir sonraki elemana geç
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

arkadaşlar c# da şu şekilde hallettim aynı mantıkla delphi

Mesaj gönderen unalaygun »

arkadaşlar c# da şu şekilde hallettim aynı mantıkla delphi de yaptık şu an elimin altında c# kodu vardı ondan bunu attım eve gidince inşallah delphi kodlarınıda atayım..

System.Collections.ArrayList a = new System.Collections.ArrayList();
System.Collections.ArrayList b = new System.Collections.ArrayList();
a.Add(1); ;
a.Add(2);
a.Add(3);
a.Add(4);
a.Add(1); ;
a.Add(2);
a.Add(3);
a.Add(4);
b.Add(a[0]);
bool esitmi=false;

for (int i = 1; i < a.Count; i++)
{
esitmi = false;
for (int j = 0; j < b.Count; j++)
{
if (int.Parse(a.ToString()) == int.Parse(b[j].ToString()))
{
esitmi = true;
break;
}
}
if (!esitmi)
b.Add(a);
}

yardımlarını için tşkler..
derviş
Cevapla