Jump to content

C# While Döngüsünde Iç Içe Döngüde Sorun


lamont
 Share

Recommended Posts

arkadaşlar for ile yaptım iç içe döngü yaptım aynı döngüyü while yapalım dedim lakin bir kaç sorum olacak i ve j degişkenleri j döngüsü içinde tanımlanmış ve önce j önce artırmış parantezin dışında ise i degişekeni artırmış ve j=0 vermiş bu kısımları açıklayabilirmisniz arkadaşlar tam kavrayamadım konuyu

 

birde arkadaşlar mesala if eşitlerken j5 kadar artırıyor 5 tane dizimizde string var ama 0,1,2,3,4 şeklinde j neden 5 den sonra sıfırlanıyor 0,1,2,3,4,5 şeklindemi artırıyor ?

 private void button1_Click(object sender, EventArgs e)
        {
            string[] dizi1 = { "a", "b", "c", "d", "e" };
            string[] dizi2 = { "a", "c", "k", "b", "d" };
            int i=0, j=0;

            while (i < dizi1.Length)
                
              {
                   while (j < dizi2.Length)
               
                 {
                     if (dizi1[i] == dizi2[j]) listBox1.Items.Add(dizi1[i].ToString());

                        j++;
          
                }
                      i++;
                      j = 0;
                   
            }

        }
    }
}
Edited by lamont
Link to comment
Share on other sites

  • Editor

her seferinde ikinci while bittiğinde sıfırdan başlaması lazım o yüzden j yi sıfırlıyor.

 

içerdeki j nin artması ise çark her döndüğünde içindeki elemanların tamamına erişmek için artırması lazım.

i ise birinci while döngüsünün yani çark her döndüğünde 1 artması lazım o yüzden artırmış.

Link to comment
Share on other sites

Anlaşılmayacak bir şey yok ortada. Ama yinede açıklayayım.

 

Öncelik ile i ve j değişkenleri döngü içerisinde tanımlanmamış. Bu kısımda kodu anlamakta yanlışınız var. int i=0 ve j=0 ile döngü dışarısında tanımlanmış durumda.

 

Bu tarz iç içe döngülerde, ilk olarak içerideki J döngüsü arttırılır, nedeni ise if (dizi1[i] == dizi2[j]) listBox1.Items.Add(dizi1[i].ToString()); satırındaki karşılaştırma, dizi1 isimli dizinin 0. elemanı ile dizi2 isimli dizinin elemanları karşılaştırılacak  ve elemanlar aynı ise listbox'a eklenecek. Yani süreç su şekilde ilerleyecektir.

 

i döngüsü = 0 ve j döngüsü = 0  ve j döngüsü artış içerisinde

dizi1 eleman 0 eşitmi dizi2 eleman 0

dizi1 eleman 0 eşitmi dizi2 eleman 1

dizi1 eleman 0 eşitmi dizi2 eleman 2

dizi1 eleman 0 eşitmi dizi2 eleman 3

dizi1 eleman 0 eşitmi dizi2 eleman 4

J döngüsü sonu.

 

Daha sonra i döngüsüne geri dönerek değer 1 olarak atanacak ve dizi1 isimli dizinin 1 indisli elemanı dizi2 isimli dizinin elemanları ile karşılaştırılacak. Ancak şu anda J değeri 4. çünkü yukarıdaki döngüde sadece j değeri sürekli arttırıldı. Bu durumda i döngüsü içerisinde j döngüsü için değerin 0'lanması gerekli ki dizi2 için ilk eleman olan 0 indisine geri dönülsün, aksi halde dizinin 5. indisi olmadığı için eşitlik sona erecek ve işlem bitecektir.

 

J değeri her i artışında sıfırlanarak dizi2 için yeniden karşılaştırma işlemi ile döngü devam edecektir. Ta ki i=4 ve j=4 olana kadar bu böyle devam edecektir.

 

Sanırım anlaşılır şekilde olmuştur. 

 

Haydi kolay gele !

Link to comment
Share on other sites

teyyare j de i de 5 kadar kadar artırıyor ben adım adım çalıştırdım j de i de 5 kadar artırıyor bende 0,1,2,3,4 bu şekilde diye biliyorum ama adım adım programı çalıştırdıgımda 5 kadar sayıyor o zaman 0,1,2,3,4,5 şeklinde oluyor anlayamadım ?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...