merhaba
asağıdaki fonksiyonla listemi siralama yapiyorum ozel olarak, fakat yapmak istedigim @ ve q harflerini de k ile birlikte k ya eşit bir şekilde siralamak istiyorum, nasıl yapabilirim. j<k,q,@<l gibi bir şey olmasi lazim heralde.
HarfDizisi:String='aâbcçdefgğhıiîjkq@lmnoöprsştuüûvyz'; bu sekilde yaparsam k dan sonra geliyor.
function siralaoza(List: TStringList; Index1, Index2: Integer): Integer;
const
HarfDizisi:String='aâbcçdefgğhıiîjklmnoöprsştuüûvyzxwq';
var i1,i2,n1,n2,i,n:Integer; S1,S2:String; Devam:Boolean;
begin
Result:=0;
S1:=List[Index1];n1:=Length(S1);
S2:=List[Index2];n2:=Length(S2);
n:=n1;
if n1>n2 then begin
Result:=1;
n:=n2;
end else if n1<n2 then Result:=-1;
i:=1; Devam:=True;
while (i<=n) and Devam do begin
i1:=pos(S1,HarfDizisi);
i2:=pos(S2,HarfDizisi);
if i1>i2 then begin
Result:=1;
Devam:=False;
end else if i1<i2 then begin
Result:=-1;
Devam:=False;
end;
Inc(i);// --> i:=i+1;
end;
end;
ozel siralama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: ozel siralama
Çok anlaşılır bir soru değil ama anladığım kadarıyla yazdım. Dene bakalım istediğin bu mu?
Kod: Tümünü seç
function siralaoza(List: TStringList; Index1, Index2: Integer): Integer;
const HarfDizisi:String='aâbcçdefgğhıiîjklmnoöprsştuüûvyzxwq';
var i1,i2,n1,n2,i,n: Integer;
S1,S2, C1, C2: string;
Devam:Boolean;
begin
Result:=0;
S1:=List[Index1];n1:=Length(S1);
S2:=List[Index2];n2:=Length(S2);
n:=n1;
if n1>n2 then begin
Result:=1;
n:=n2;
end else if n1<n2 then Result:=-1;
i:=1; Devam:=True;
while (i<=n) and Devam do
begin
// Burasını değiştirdim
C1 := S1[i]; C2 := S2[i];
if Pos(C1, '@q') > 0 then C1 := 'k'; // @ veya q ise k gibi işlem yapması için
if Pos(C2, '@q') > 0 then C2 := 'k';
i1:=pos(C1,HarfDizisi);
i2:=pos(C2,HarfDizisi);
//***********************************
if i1>i2 then
begin
Result:=1;
Devam:=False;
end else if i1<i2 then
begin
Result:=-1;
Devam:=False;
end;
Inc(i);
end;
end;
Re: ozel siralama
ilüzyon ilüzyon...
1.Önce tüm @ olanları k@ ile değiştir.
2.Normal sıralama yap.
3.Sonra tüm @k olanlatı @ ile değiştir.
çok hızlı çözüm üretirsin.
1.Önce tüm @ olanları k@ ile değiştir.
2.Normal sıralama yap.
3.Sonra tüm @k olanlatı @ ile değiştir.
çok hızlı çözüm üretirsin.
Re: ozel siralama
ustadim tesekkur ederim oldu.
bir sey soracagim, 3 veya 4 harfim oldugunda '@qxw' de k gibi olmasi icin bu satirlarin bu şekilde değişmesi yerterli mi.
if Pos(C1, '@qxw') > 0 then C1 := 'k';
if Pos(C2, '@qxw') > 0 then C2 := 'k';
bir sey soracagim, 3 veya 4 harfim oldugunda '@qxw' de k gibi olmasi icin bu satirlarin bu şekilde değişmesi yerterli mi.
if Pos(C1, '@qxw') > 0 then C1 := 'k';
if Pos(C2, '@qxw') > 0 then C2 := 'k';
-
- Üye
- Mesajlar: 216
- Kayıt: 10 Ara 2013 03:50
Re: ozel siralama
Evet aynı şekilde bir çok harf için kullanabilirsin.