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
#11
Okudum düşündüm fikir kumkuması yaptım hatta onyüz milyon baloncuk yuttum iyimi yine de anlamadım. Smile
Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...





Cevapla
#12
Sanırım şöyle bir olay isteniyor, örneğin a,b,c,d diye 4 ürünümüz var, her ürünü diğer tanımlı ürünler ile karşılaştırmak gerekiyor. 
Örneğimize göre, a ile b yi, a ile c yi, a ile d yi, b ile c yi, b ile d yi ve c ile d yi : a-b, a-c, a-d, b-c, b-d, c-d gibi.

aşağıdaki gibi bir kod işinizi görecektir sanırım.

const
a:array[0..3] of string=('a','b','c','d');
var
b:string;
x, y : integer;
begin
b:='';
for x:=0 to 3
   do begin
      for y:=0 to 3
          do begin
          if (y>x) then
                    b:=b+a[x]+a[y]+' - ';
             end;
      end;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#13
program Project12;

{$APPTYPE CONSOLE}

{$R *.res}

uses
 System.SysUtils;
 const
 ALT=0;  //raflara yerleşecek ürünün alt değeri yani içiçe oluşacak döngünün başı
 UST=9; //raflara yerleşecek ürünün üst değeri yani içiçe oluşacak döngünün son değeri
  procedure donguolustur(n:integer);
var
ndizi:array of integer;
i,k,j:integer;

label
_lab;
begin
SetLength(ndizi,n);
 _lab:
for I := ALT to UST do
begin
for k := 0 to n-2 do
begin
write(','+ndizi[k].ToString); // ben buradaki oluşacak matrisin index değerlerini yazdırıyorum ama UST-ALT+1 üzeri n olan bir dizi oluşturulursa ki bu döngünün toplam eleman sayısıdır.
end;
writeln(','+i.ToString);   //buradaki k değeriyle ndizi içindeki değerlerin çarpımının toplamıyla oluşacak index ile yukarda bahsettiğim  diziye istediğiniz herhangi bir değer de yerleştirilebilir.                          
                                 //yani matrisin açılmış ardışıl halidir dizi ki zaten bellekte de yapılan aynı işlem yapılır ama biz çok boyutlu gibi işlem yaparız.
end;
inc(ndizi[n-2]);
for j:= n-2 downto 0 do
begin
if(j<>0) and (ndizi[j]=UST+1) then
begin
inc(ndizi[j-1]);
ndizi[j]:=ALT;
end;
 end;

     if(ndizi[0]<UST+1) then goto _lab;

end;
var
r:String;

begin
 try

    donguolustur(2);
    ReadLn(Input, r);
 except
   on E: Exception do
     Writeln(E.ClassName, ': ', E.Message);
 end;
end.


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.)
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla
#14
Bence problem, konu sahibi sevgili arkadaşımızın biraz daha izahına muhtaç sanırım. Eğer, zahmet buyurup bir nebze daha izahat yapabilir ise; çok daha isabetli yorumlar yapılabilecektir sanıyorum.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#15
Function ReonYerles(v:array of string;ilkurun:string=''):string;
var
i:Integer;
begin
 Result:='';
 for i := Low(v) to High(v) do
 begin
   if ilkurun ='' then Result:=Result+ReonYerles(v,v[i])+#13#10
   else
    if ilkurun <> v[i] then
   Result:=Result+'['+ilkurun+'-'+v[i]+']';
   
 end;
end;

procedure TForm1.Button2Click(Sender: TObject);
const
a:array[0..3] of string=('a','b','c','d');
var
s:string;
begin
 s:=ReonYerles(a);
ShowMessage(s)  

end;
Cevapla
#16
(23-08-2017, Saat: 15:35)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBence problem, konu sahibi sevgili arkadaşımızın biraz daha izahına muhtaç sanırım. Eğer, zahmet buyurup bir nebze daha izahat yapabilir ise; çok daha isabetli yorumlar yapılabilecektir sanıyorum.

Sanırım arkadaş yoğun olduğundan dolayı foruma giremedi hocam, bu gün takip ettim sabah bi ara geldi sonra  online olmadı hiç. Gelince izahını yapacaktır muhtemelen.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#17
Bir olay bu kadar anlatılamaya bilirmiş Smile sayısız şekilde for döngüsü çağırmak istiyorsun anlaşılan bu döngünün girişi çıkışı olacak. Bu döngüyü bir fonksiyon yapsan ve değerleri değiştirip istediğin kadar bu fonksiyonu çağırsan gibi anlamadığım bir şeye cevap vermeye çalıştım gibi birşey oldu Smile
Topluluk mopluluk yok :/
Cevapla
#18
(23-08-2017, Saat: 10:51)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba hocam, ben yine anlamadım Smile şimdi elinizde raflar var, rafların yüksekliği derinliği belli (?), her bir raf max 8 ürün alıyor. Mesela yüksekliği belli seviye olan ürünler aynı rafa girebiliyor mu yoksa her rafta aynı türden ürünler olmak zorundamı? Sizin yapmak istediğiniz elimize örneğin 3 adet ürün geldi, bunların ebatları alınıp hangi raf uygunsa (boşsa) sıradan ürünleri o raflara yerleştirmekmi?

Hocam 3 ürün geldiyse iç içe 3 tane for oluşturarak bu 3 ürünün birbirleriyle karşılaştırılacağı değerleri karşılaştıracağız. Ne kadar ürün, o kadar "for döngüsü" diyebiliriz Smile
Save

(23-08-2017, Saat: 11:21)meko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olmemtable kullanmak serbest mi Smile

Her şey serbest Smile
Save

(23-08-2017, Saat: 11:54)witalihakko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBende okuyunca anlar gibi oldum ama sonra baktım yine anlamamışım Smile

Aslında iç içe çağırma ile istenilen anlaşılmış hocam. Buradaki ana espri şu; "n tane ürün var. Her ürünün 12 farklı özelliği var. Buradaki 12 özelliğin her birinin farklı koşul ve kontrolleri var."

Örn: 3 tane ürün geldi. Bu üç ürünün ayrı ayrı 12 özelliğini mukayese ederek, en uygun yerleşimi sağlıyoruz. Statik olarak kod oluşturunca tıkır tıkır çalışıyor yazdığım kontrol ve döngüler. Burada istediğim gelen ürün adedine göre iç içe döngüye alarak permütasyonu çalıştırmak.

[ ilk ürün için [ içinci ürün için [ üçüncü ürün için ] ] ]

---

Yaptığım kontrolün sistemi; 12 özellik için değer arttırımı yapmak. Örneğe sadık kalarak; 3 ürün için yan yana 3 tane değer var; 0 0 0. İlk parametresi için 1 0 0... 2 0 0.... 9'a kadar gidebilir. Sonra 0 1 0.... 0 2 0.... En son gidebileceği değer 9 9 9. Bu şekilde her ürünün diğer ürünlerle denetimini yapmak için ürün miktarınca iç içe döngü ile matris kontrolü yazmış olacağız.
Save

(23-08-2017, Saat: 14:12)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
#pragma hdrstop
#pragma argsused

#ifdef _WIN32
#include <tchar.h>
#else
 typedef char _TCHAR;
 #define _tmain main
#endif

#include <stdio.h>
#include <stdlib.h>
#define ALT 0 //raflara yerleşecek ürünün alt değeri yani içiçe oluşacak döngünün başı
#define UST 9  //raflara yerleşecek ürünün üst değeri yani içiçe oluşacak döngünün son değeri
void donguolustur(int n)
{
int *ndizi=new int[n];
memset(ndizi,0,n);
_lab:
for (int i= ALT; i <= UST; i++)
{

for (int k = 0; k < n-1; k++)
{
printf(",%d",ndizi[k]); // ben buradaki oluşacak matrisin index değerlerini yazdırıyorum ama UST-ALT+1 üzeri n olan bir dizi oluşturulursa ki bu döngünün toplam eleman sayısıdır.
}
printf(",%d \n",i);   //buradaki k değeriyle ndizi içindeki değerlerin çarpımının toplamıyla oluşacak index ile yukarda bahsettiğim  diziye istediğiniz herhangi bir değer de yerleştirilebilir.

                            //yani matrisin açılmış ardışıl halidir dizi ki zaten bellekte de yapılan aynı işlem yapılır ama biz çok boyutlu gibi işlem yaparız.
}
ndizi[n-2]++;
 for (int j= n-2; j >=0; j--)
 {
 if(j!=0&&ndizi[j]==UST+1)
 {
ndizi[j-1]++;
ndizi[j]=ALT;
 }


 }


 if(ndizi[0]<UST+1)goto _lab;

}





int _tmain(int argc, _TCHAR* argv[])
{
donguolustur(5);
system("pause");
return 0;
}



Hocam ben delphiyi çok bilmediğimden c++'da yazdım.

Kodu bir çalıştırın hocam donguolustur(int n) fonksiyonuna hangi değeri verirseniz o kadar döngü oluşur.
Umarım soruyu doğru anlamış ve cevaplandırmışımdır.Doğruıysa delphiye uyarlarız.

Müsait bir vaktimde kontrol bloğunu içine yerleştirerek doğru sonuçları verip vermediğini deneyeceğim. Eğer uyarsa Delphi'ye uyarlayıp size de kodları paylaşırım. Çok teşekkürler.

(23-08-2017, Saat: 14:13)QuAdR Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlOkudum düşündüm fikir kumkuması yaptım hatta onyüz milyon baloncuk yuttum iyimi yine de anlamadım. Smile

Hocam önceki yorumlara verdiğim cevapları gözden geçirebilir misiniz? Olayı detaylıca enine boyuna anlatamadığım için parça parça yazabiliyorum, kusura bakmayın.
Save
{ talk is cheap show me the code. }
Cevapla
#19
Şö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
Topluluk mopluluk yok :/
Cevapla
#20
(24-08-2017, Saat: 09:42)Abdullah Ilgaz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(23-08-2017, Saat: 10:51)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba hocam, ben yine anlamadım Smile şimdi elinizde raflar var, rafların yüksekliği derinliği belli (?), her bir raf max 8 ürün alıyor. Mesela yüksekliği belli seviye olan ürünler aynı rafa girebiliyor mu yoksa her rafta aynı türden ürünler olmak zorundamı? Sizin yapmak istediğiniz elimize örneğin 3 adet ürün geldi, bunların ebatları alınıp hangi raf uygunsa (boşsa) sıradan ürünleri o raflara yerleştirmekmi?

Hocam 3 ürün geldiyse iç içe 3 tane for oluşturarak bu 3 ürünün birbirleriyle karşılaştırılacağı değerleri karşılaştıracağız. Ne kadar ürün, o kadar "for döngüsü" diyebiliriz Smile
Save

(23-08-2017, Saat: 11:21)meko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olmemtable kullanmak serbest mi Smile

Her şey serbest Smile
Save

(23-08-2017, Saat: 11:54)witalihakko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBende okuyunca anlar gibi oldum ama sonra baktım yine anlamamışım Smile

Aslında iç içe çağırma ile istenilen anlaşılmış hocam. Buradaki ana espri şu; "n tane ürün var. Her ürünün 12 farklı özelliği var. Buradaki 12 özelliğin her birinin farklı koşul ve kontrolleri var."

Örn: 3 tane ürün geldi. Bu üç ürünün ayrı ayrı 12 özelliğini mukayese ederek, en uygun yerleşimi sağlıyoruz. Statik olarak kod oluşturunca tıkır tıkır çalışıyor yazdığım kontrol ve döngüler. Burada istediğim gelen ürün adedine göre iç içe döngüye alarak permütasyonu çalıştırmak.

[ ilk ürün için [ içinci ürün için [ üçüncü ürün için ] ] ]

---

Yaptığım kontrolün sistemi; 12 özellik için değer arttırımı yapmak. Örneğe sadık kalarak; 3 ürün için yan yana 3 tane değer var; 0 0 0. İlk parametresi için 1 0 0... 2 0 0.... 9'a kadar gidebilir. Sonra 0 1 0.... 0 2 0.... En son gidebileceği değer 9 9 9. Bu şekilde her ürünün diğer ürünlerle denetimini yapmak için ürün miktarınca iç içe döngü ile matris kontrolü yazmış olacağız.
Save

(23-08-2017, Saat: 14:12)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
#pragma hdrstop
#pragma argsused

#ifdef _WIN32
#include <tchar.h>
#else
 typedef char _TCHAR;
 #define _tmain main
#endif

#include <stdio.h>
#include <stdlib.h>
#define ALT 0 //raflara yerleşecek ürünün alt değeri yani içiçe oluşacak döngünün başı
#define UST 9  //raflara yerleşecek ürünün üst değeri yani içiçe oluşacak döngünün son değeri
void donguolustur(int n)
{
int *ndizi=new int[n];
memset(ndizi,0,n);
_lab:
for (int i= ALT; i <= UST; i++)
{

for (int k = 0; k < n-1; k++)
{
printf(",%d",ndizi[k]); // ben buradaki oluşacak matrisin index değerlerini yazdırıyorum ama UST-ALT+1 üzeri n olan bir dizi oluşturulursa ki bu döngünün toplam eleman sayısıdır.
}
printf(",%d \n",i);   //buradaki k değeriyle ndizi içindeki değerlerin çarpımının toplamıyla oluşacak index ile yukarda bahsettiğim  diziye istediğiniz herhangi bir değer de yerleştirilebilir.

                            //yani matrisin açılmış ardışıl halidir dizi ki zaten bellekte de yapılan aynı işlem yapılır ama biz çok boyutlu gibi işlem yaparız.
}
ndizi[n-2]++;
 for (int j= n-2; j >=0; j--)
 {
 if(j!=0&&ndizi[j]==UST+1)
 {
ndizi[j-1]++;
ndizi[j]=ALT;
 }


 }


 if(ndizi[0]<UST+1)goto _lab;

}





int _tmain(int argc, _TCHAR* argv[])
{
donguolustur(5);
system("pause");
return 0;
}



Hocam ben delphiyi çok bilmediğimden c++'da yazdım.

Kodu bir çalıştırın hocam donguolustur(int n) fonksiyonuna hangi değeri verirseniz o kadar döngü oluşur.
Umarım soruyu doğru anlamış ve cevaplandırmışımdır.Doğruıysa delphiye uyarlarız.

Müsait bir vaktimde kontrol bloğunu içine yerleştirerek doğru sonuçları verip vermediğini deneyeceğim. Eğer uyarsa Delphi'ye uyarlayıp size de kodları paylaşırım. Çok teşekkürler.

(23-08-2017, Saat: 14:13)QuAdR Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlOkudum düşündüm fikir kumkuması yaptım hatta onyüz milyon baloncuk yuttum iyimi yine de anlamadım. Smile

Hocam önceki yorumlara verdiğim cevapları gözden geçirebilir misiniz? Olayı detaylıca enine boyuna anlatamadığım için parça parça yazabiliyorum, kusura bakmayın.
Save

Hocam ben delphiye uyarlanmış halini yazdım sonraki cevaplara bakın.
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
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 711 19-09-2017, Saat: 23:04
Son Yorum: uparlayan



Konuyu Okuyanlar: 1 Ziyaretçi