Csharp Programlama Dilinde Diziyi Ters Çevirme ve Foreach Döngüsü

C#'da Reverse metodunu çağırarak bir diziyi ters çevirebiliriz. Aşağıdaki örnekte hem foreach döngüsünün kullanımını hem de bir dizininin Array.Reverse(DiziAdi) şeklinde kullanılarak ters çevrilmesini görüyorsunuz.  

Foreach döngüsü bir dizinin tüm elemanlarını dolaşmak için kullanılır. Aynı işlemi for döngüsü ile de yapabilirsiniz. Aşağıdaki iki kullanım şekli de aynı anlama gelir.

foreach(string ulke in ulkeler)
{
     Console.WriteLine(ulke);
}

Aşağıda da alıştığımız klasik for döngüsünün kullanımını görmektesiniz.

for (int i=0; i<ulkeler.Length; i++)
{
     Console.WriteLine(ulkeler[i]);
}

 
Şimdi programın tamamını görelim.

using System;
 
namespace DiziFonksiyonlari
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] ulkeler = {"İran","Irak","Fas","Mısır","Rusya" };
            foreach(string ulke in ulkeler)
            {
                Console.WriteLine(ulke);
            }
            Array.Reverse(ulkeler);
            
            Console.WriteLine("==== Dizinin ters çevrilmiş hali ===");
            
            foreach (string ulke in ulkeler)
            {
                Console.WriteLine(ulke);
            }
        }
    }
}


Örneğin bir sayı dizisini aynı yöntemle ters çevirelim; Yine Foreach döngüsünü kullanaarak diziyi dolaşma işlemini yapalım.

using System;
 
namespace DiziFonksiyonlari
{
    class Program
    {
        static void Main(string[] args)
        {
 
            int[] dizi = { 1, 3, 5, 7, 9 };
            foreach (int i in dizi)
            {
                Console.WriteLine(i);
            }
            Array.Reverse(dizi);
            Console.WriteLine("\n=== Ters Çevrilmiş Hali ===");
            foreach (int i in dizi)
            {
                Console.WriteLine(i);
            }
            
        }
    }
}
 
Şimdi de Reverse yani Ters çevirme işlemini kendimiz yapalım.

Soru : Verilen bir dizinin elemanlarını ters çeviriniz. Örneğin;

 eskidizi = { 5, 13, 20, 30, 15, 40 };
 yenidizi = {40, 15, 30, 20, 13, 5};

şeklinde hazırlayınız.


Bir dizideki elemanları ters çevirirken yeni indisin ne olacağını bir formülle düşünebiliriz. Örneğin yukarıdaki iki diziye baktığınızda, ters çevrilirken 0.indis, 5. indis oluyor, 1.indis, 4.indis oluyor. Aşağıdaki tabloya bakalım ve tüm indislerin yeni değerlerini görelim.

Eski İndis Yeni İndis
0 5
1 4
2 3
3 2
4 1
5 0


Bu tabloya göre dizideki eleman sayısı n ve indisin o anki değeri i ise yeni indis değeri; n-1-i şeklinde olacaktır. 

using System;
 
namespace DiziTersCevirme
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] dizi = { 5, 13, 20, 30, 15, 40 };
            int n = dizi.Length;
            int[] yenidizi = new int[n];
 
            Console.WriteLine("Dizinin ilk hali");
            for (int j = 0; j < n; j++)
                Console.Write(dizi[j] + " ");
 
            for (int i=0; i<n; i++)
            {
                yenidizi[n-1-i]= dizi[i];
            }
           
            Console.WriteLine("Ters çevrilmiş hali");
            for (int j = 0; j < n; j++)
                Console.Write(yenidizi[j]+" ");
 
        }
    }
}

Farklı örneklerde görüşmek dileğiyle ...

Mutlu Kodlamalar,
Oğuzhan TAŞ
Nisan, 2015

Bookmark and Share