Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
(Sadeleştirildi) Girilen sayı adedinde iç içe for döngüsü oluşturma
#21
(23-08-2017, Saat: 15:05)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
     if(ndizi[0]<UST+1) then goto _lab;

Hocam bu da delphi'de yazılmış hali.(Kodu bir çalıştırın hocam donguolustur(int n) fonksiyonuna hangi değeri verirseniz o kadar döngü oluşur.)

goto lanetlenmemişmiydi Big Grin

“Do. Or do not. There is no try.”
Cevapla
#22
(24-08-2017, Saat: 09:54)boreas Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlŞöyle yapsak sorunu söylesen bunu nasıl yaparız desen hiç for döngüsü vs. demesen. Koli alan yerleri var koli boyutları şu şekilde 8 ürün en efektif nasıl sığar gibi mesela

Açıklama revize edildi. Tekrar okuyabilirsiniz. İyi günler.

(24-08-2017, Saat: 09:59)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlHocam ben delphiye uyarlanmış halini yazdım sonraki cevaplara bakın.

Teşekkürler. İlk fırsatta deneyeceğim, size dönüş vereceğim. Anlatımı tekrar revize ettim. Dilerseniz tekrar okuyabilirsiniz. İyi günler.
Save
{ talk is cheap show me the code. }
Cevapla
#23
(24-08-2017, Saat: 10:25)masteryoda Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(23-08-2017, Saat: 15:05)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
     if(ndizi[0]<UST+1) then goto _lab;

Hocam bu da delphi'de yazılmış hali.(Kodu bir çalıştırın hocam donguolustur(int n) fonksiyonuna hangi değeri verirseniz o kadar döngü oluşur.)

goto lanetlenmemişmiydi Big Grin

Aslinda orada while ile döngü oluşturulabilir.Ama goto döngü olusturmak icin yeterli,zaten döngü oluşturnak için arka planda jump komutları da aynı işi yapar.lanetlenmesi de siz elinize yüzünüze bulaştırırsınız kullanmayın diyorlar bizeSmile

Hocam son yazdıklarınıza bakınca şunu anladım.benim yazdığım kodlar size içiçe döngü oluşturma zemini oluşturuyor.Yorum satırlarında da yazdığım gibi siz içini belirlediğiniz kriterlere göre doldurabilirsiniz.
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla
#24
Eğer doğru anladım ise kod aşağıdadır, Tüm ürünlerin, Alayının özellikleri ile birebir karşılaştırıyor.
type
TXModel = class(TObject)
id:integer;
value:String;
ylist: array of String;
end;

var
 Form1: TForm1;
Degerler:Array Of TXModel;

procedure TForm1.Button1Click(Sender: TObject);
begin
Karsilastir(Degerler);
end;

Procedure TForm1.Karsilastir(Const a:Array Of TXModel);
var
x, y, z, t : integer;
Begin
For x:=Low(a) to High(a)
  Do Begin
     for y:=Low(a) to High(a)
         Do Begin
         if (y>x)
             Then Begin
                   Memo1.Lines.Add(a[x].value+' ile '+a[y].value+' Kaşılaştır');
                   For z:=Low(a[x].ylist) to High(a[y].ylist)
                       Do Begin
                          For t:=Low(a[x].ylist) to High(a[y].ylist)
                              Do Begin
                                 Memo1.Lines.Add('-- '+a[x].ylist[z]+' ile '+a[y].ylist[t]+' Kaşılaştır');
                                 End;
                           End;
                   End;
             End;
     End;

End;

procedure TForm1.FormCreate(Sender: TObject);
var
a1,a2,a3:TXModel;
begin
SETLENGTH(DEGERLER,3);
a1:=TXModel.Create;
a1.id:=1;
a1.value:='Urun_1';
SetLength(a1.ylist,5);
a1.ylist[0]:='U11';
a1.ylist[1]:='U12';
a1.ylist[2]:='U13';
a1.ylist[3]:='U14';
a1.ylist[4]:='U15';

a2:=TXModel.Create;
a2.id:=2;
a2.value:='Urun_2';
SetLength(a2.ylist,5);
a2.ylist[0]:='U21';
a2.ylist[1]:='U22';
a2.ylist[2]:='U23';
a2.ylist[3]:='U24';
a2.ylist[4]:='U25';

a3:=TXModel.Create;
a3.id:=3;
a3.value:='Urun_3';
SetLength(a3.ylist,5);
a3.ylist[0]:='U31';
a3.ylist[1]:='U32';
a3.ylist[2]:='U33';
a3.ylist[3]:='U34';
a3.ylist[4]:='U35';

Degerler[0]:=a1;
Degerler[1]:=a2;
Degerler[2]:=a3;
end;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#25
Doğru mu anladım, orayı tam ben de anlayamadım ama, anladığım kadarıyla:

n tane ürün var.
Her bir ürünün m tane alt özelliği var.

Yapılmak istenen bütün m değerlerini karşılaştırmak mıdır?

4 ürün için
n[0] ve n[1] bütün m leri
n[0] ve n[2] bütün m leri
...
...
n[2] ve n[3] bütün m leri

midir?
Me on the move..
WWW
Cevapla
#26
(05-09-2017, Saat: 03:55)The_aLiEn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlDoğru mu anladım, orayı tam ben de anlayamadım ama, anladığım kadarıyla:

n tane ürün var.
Her bir ürünün m tane alt özelliği var.

Yapılmak istenen bütün m değerlerini karşılaştırmak mıdır?

4 ürün için
n[0] ve n[1] bütün m leri
n[0] ve n[2] bütün m leri
...
...
n[2] ve n[3] bütün m leri

midir?

Evet doğru anlaşılmış.

Oluşan matrisin ilgili kolonları kendi aralarında yeni bir değer oluşturur.

Aslında n[1].m1 ile n[1].m2 değerleri bir aradayken anlam ifade ediyor. Bu yüzden tüm n'lerin hem m'leriyle, hemde diğer n'lerle olan işlemleri bulunuyor.
{ talk is cheap show me the code. }
Cevapla
#27
(06-09-2017, Saat: 09:51)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlAslında n[1].m1 ile n[1].m2 değerleri bir aradayken anlam ifade ediyor. Bu yüzden tüm n'lerin hem m'leriyle, hemde diğer n'lerle olan işlemleri bulunuyor.

O halde ilgili karşılaştırma:

k0 = 0, k<8,
t0 = 0, t < 11

n[k].m[t] .. n[k].m[t+1]

olarak tanımlanabilir mi?

Problemin daha net analiz edilmesi gerekli diye düşünüyorum. Mesela,

* Karşılaştırma kurallarınız nedir? Modelleyebilir misiniz?
* Karar verme kurallarınız nedir? Modelleyebilir misiniz?

Matris ifadesi okudum yukarılarda. Eksik kaldığını düşünüyorum:

(3 ürün ve 6 özellik için)

Matrisi
   

olarak değil

   

olarak oluşturursanız 2 adet döngü ile satır ve sütun ağırlık değerlerini üretebilirsiniz. Dikkat ederseniz yeni oluşacak matrisin x=y doğrusuna göre simetrik olduğunu göreceksiniz. Bu da sizi üçgen matrise götürür Wink

Pseudo olarak da şöyle yazardım ben:

n = Toplam ürün adedi
m = İstenilen max ürün sayısı
t = İstenilen min ürün sayısı

A- Tüm ürünlerin m'li kombinasyonlarını oluştur ve bu kombinasyonları bir stack listesi olarak tut. (n>m olabilir çünkü)
  TList<TStack<TUrun>>
  C(n, m)

B- Her bir ListItem için


1- İşlem listesine, stack içinden çekip ürün ekle
2- Listedeki ürün sayısı k >= t mi?
a) Hayır değil. 1'e git
b) Evet. 3'e git
3- Yeni bir işlem matrisi oluştur
4- Matrisin satır/sütun değerlerini hesapla
5- Satır/sütun değerlerine göre karar ver / Sonucu sakla vb.
6- Stack boş mu?
a) Evet. Bu grup için tüm ürünler işlendi. B'ye git.
b) Hayır. 1'e git

C- Bit.

Not: Özellikle, sanki siz de çözüme ulaşmamışsınız gibi düşünerek yazdım Wink
Me on the move..
WWW
Cevapla
#28
Dönüp dolaşıp yazdığım koda geliceksiniz gibi bir his var içimde Smile
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#29
(06-09-2017, Saat: 15:28)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlDönüp dolaşıp yazdığım koda geliceksiniz gibi bir his var içimde Smile

Sizin kodunuz ikili karşılaştırmalar için ideal hocam. Elinize sağlık. Ancak istenilen biraz farklı.
Save
{ talk is cheap show me the code. }
Cevapla
#30
(06-09-2017, Saat: 12:59)The_aLiEn Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol...

Pseudo olarak da şöyle yazardım ben:

n = Toplam ürün adedi
m = İstenilen max ürün sayısı
t = İstenilen min ürün sayısı

A- Tüm ürünlerin m'li kombinasyonlarını oluştur ve bu kombinasyonları bir stack listesi olarak tut. (n>m olabilir çünkü)
  TList<TStack<TUrun>>
  C(n, m)

B- Her bir ListItem için


1- İşlem listesine, stack içinden çekip ürün ekle
2- Listedeki ürün sayısı k >= t mi?
a) Hayır değil. 1'e git
b) Evet. 3'e git
3- Yeni bir işlem matrisi oluştur
4- Matrisin satır/sütun değerlerini hesapla
5- Satır/sütun değerlerine göre karar ver / Sonucu sakla vb.
6- Stack boş mu?
a) Evet. Bu grup için tüm ürünler işlendi. B'ye git.
b) Hayır. 1'e git

C- Bit.

Not: Özellikle, sanki siz de çözüme ulaşmamışsınız gibi düşünerek yazdım Wink

Karşılaştırmalar için koleksiyonları kullandım hocam. Çözümüm biraz daha kapsamlı olsun diye zorladım aslında burada Smile

Bu oluşan matrisin denetimini takım sporlarındaki grup müsabakaları gibi sonuçlandırıyor sanırım, değil mi?  Kapsamına dair şöyle bir detay verebilirim; 2~8 adet Item ekleyeceğiz. Bu eklenecek Item'ların oluşturması gereken bir toplam değerler bütünü var (m değerlerimiz). Bu oluşacak olan nihai değerleri oluşturabilmek için ekleyeceğimiz her Item, bu sonuçla eşleşene dek eklenmeye devam edecek. Hem kendi içindeki miktarı, hemde Item sayısı artacak.

Ek; n1, n2, n3, n4... bu 4 Item için 8 tane m var.

(kendi aralarında farklı işlemleri var)

n1.m1 + n2.m1 + n3.m1 + n4.m1 (m1ler)
n1.m2 + n2.m2 + n3.m2 + n4.m2 (m2ler)
n1.m3 + n2.m3 + n3.m3 + n4.m3 (m3ler)
n1.m4 + n2.m4 + n3.m4 + n4.m4 (m4ler)
n1.m5 + n2.m5 + n3.m5 + n4.m5 (m5ler)
n1.m6 + n2.m6 + n3.m6 + n4.m6 (m6ler)
n1.m7 + n2.m7 + n3.m7 + n4.m7 (m7ler)
n1.m8 + n2.m8 + n3.m8 + n4.m8 (m8ler)

dip: m8'ler m3 ile farklı işlemler yapıyor. m7'ler m4 ile. (bu tarz çapraz kontroller de var)

bu (m) parametrelerin sonuçları çarp-böl-kes-biç-topla işleminden sonra sonuç oluşturuyor.
asıl istenilen sonuç değeri ile bu değerlerden çıkan sonuç değerini en uygun şekilde tespit etmemiz gerekiyor.

basit bir örneklem yaparsam; 4 takımda 8 tane oyuncu var. bunların yaş ortalamasını alıp, istenilen yaş ortalamasına denklemeye çalışacağız. şayet takımın yaş ortalaması altta kalırsa yaşlı bir (m) oyuncu, genç bir (m) oyuncu yerine dahil olacak. aynı şekilde ortalama yaşlı kalırsa da gençleştireceğiz. temel felsefesi bunun üzerine kurulu.

burada ana kıstas, örneklemdeki kıstas olan yaş ortalamasının nihai değere nazaran farklılık göstermesi. yani m1, m2 ve m3 değerleri için 25 olan şey, m4 için 45, m5 için 30 olabilir. ve bu değerlerin üst-alt geçer payları da bulunuyor. n1.m1 için konuşursak; 23-27 aralığında olabilir.
{ talk is cheap show me the code. }
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi ORM Yapısı ile işlevsel kod çıktısı oluşturma Abdullah ILGAZ 7 535 19-09-2017, Saat: 23:04
Son Yorum: uparlayan



Konuyu Okuyanlar: 1 Ziyaretçi