Dizilerin yazdığımız programlardaki etkisi elbette ki çok büyüktür. Farkında olmadan bile birçok zaman dizileri kullanırız. Örneğin listbox kontrolü içerisine eleman eklerken ya da seçili indexte ki elemanı kullanırken. Veritabanı işlemlerini yaparken matrisler ile işlem yapılıyor demektir. Excel sayfasını ya da Access tablolarını düşünün, satırlar ve sütunlardan oluşan bir mantık vardır. Bu hücreler içerisinde gezinmek, bir satırı başka bir satırdaki değerle kıyaslamak için dizilerle aranızın iyi olması gerekmektedir.

Bu makalemizde iki matrisin nasıl çarpılacağını ve sonuç matrisini hesaplatacağınızı anlatacağız. Öncelikle iki matris nasıl çarpılmalıdır bunu anlatalım. Eğer iki matris çarpılmak isteniyorsa, ilk matrisin sütun sayısının, ikinci matrisin satır sayısına eşit olması zorunluluğu vardır. Aksi halde bu matrisler çarpılamaz. Çarpım sonucunda oluşacak matrisin, satır sayısı ilk matrisin satır sayısı, sütun sayısı ise ikinci matrisin sütun sayısına eşittir. Örneğin 3 satır 6 sütundan oluşan bir matris, 6 satır 4 sütundan oluşan bir matris ile çarpılabilir. Sonuç olarak oluşacak matris ise 3 satır, 4 sütuna sahip olur.

[3,6] * [6,4] = [3,4]

Şimdi bu çarpma işleminin nasıl gerçekleştiğini aşağıdaki matrisler ile gösterelim. Ardından da uygulamamıza ait çarpım kodunu verelim.

for (int i = 0; i <= matris_1.GetUpperBound(0); i++)

            {

for (int j = 0; j <= matris_2.GetUpperBound(1); j++)

                {

for (int k = 0; k <= matris_2.GetUpperBound(0); k++)

                    {

sonuc[i, j] += matris_1[i, k] * matris_2[k, j];

                    }
                }
            }

Yukarıdaki döngüler içerisinde, diagramda gösterilen işlem yaptırılmıştır. İlk döngü ile matris1 içerisindeki her satır gezilmiştir. İkinci döngü içerisinde ise diğer matrisin kolonları gezilmek istenmiştir. Son döngü içerisinde ise ikinci matrisin kolonları gezilirken satırları da gezilmiştir. Yani üstteki döngüde matris1’ in her bir satırı için ikinci döngüde matris2’ in her kolonu gezilmiş ve her kolon gezilirken matris2’ nin satırlarına erişilmiştir.

“Console Uygulaması” olarak yaptığımız projenin tüm kodları aşağıda verilmiştir. Siz asıl işlemin yukarıdaki verdiğimiz kodlarla yapıldığını unutmayın. Console tarafında sadece uygulamayı süsledik. İstenilen eleman sayılarına sahip diziler tanımlamanıza olanak tanıdık. Sonuç matrisinin boyutu ise, sizin belirttiğiniz matris1 ve matris2 eleman sayılarına göre otomatik olarak oluşturulur.

static void Main(string[] args)

        {

#region değerlerin istendiği yer

int x1, x2, y1, y2;

            Console.Write(“ilk matrisin satır sayısını giriniz : “);
            x1 = Convert.ToInt32(Console.ReadLine());
            Console.Write(“ilk matrisin sütun sayısını giriniz : “);
            y1 = Convert.ToInt32(Console.ReadLine());
            Console.Write(“ikinci matrisin satır sayısını giriniz : “);
            x2 = Convert.ToInt32(Console.ReadLine());
            Console.Write(“ikinci matrisin sütun sayısını giriniz : “);
            y2 = Convert.ToInt32(Console.ReadLine());
            #endregion

#region elemanların girişi

int[,] matris_1 = new int[x1, y1];

int[,] matris_2 = new int[x2, y2];

int[,] sonuc = new int[x1, y2];

            Console.WriteLine(”                             “);
            Console.WriteLine(“—————————-“);
            Console.WriteLine(“1. Matrisin Eleman Girişi”);
            Console.WriteLine(“—————————-“);
            Console.WriteLine(”                             “);

for (int i = 0; i <= matris_1.GetUpperBound(0); i++)

            {

for (int j = 0; j <= matris_1.GetUpperBound(1); j++)

                {

Console.Write(“[” + (i + 1) + ” , ” + (j + 1) + “] = “);

                    matris_1[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }
            Console.WriteLine(”                             “);
            Console.WriteLine(“—————————-“);
            Console.WriteLine(“2. Matrisin Eleman Girişi”);
            Console.WriteLine(“—————————-“);
            Console.WriteLine(”                             “);

for (int i = 0; i <= matris_2.GetUpperBound(0); i++)

            {

for (int j = 0; j <= matris_2.GetUpperBound(1); j++)

                {

Console.Write(“[” + (i + 1) + ” , ” + (j + 1) + “] = “);

                    matris_2[i, j] = Convert.ToInt32(Console.ReadLine());
                }
            }
            #endregion

#region hesaplatılan bölüm

for (int i = 0; i <= matris_1.GetUpperBound(0); i++)

            {

for (int j = 0; j <= matris_2.GetUpperBound(1); j++)

                {

for (int k = 0; k <= matris_2.GetUpperBound(0); k++)

                    {

sonuc[i, j] += matris_1[i, k] * matris_2[k, j];

                    }
                }
            }
            #endregion
            #region sonuc yazdırılması
            Console.WriteLine(”                             “);
            Console.WriteLine(“—————————-“);
            Console.WriteLine(“Sonuç Matrisi”);
            Console.WriteLine(“—————————-“);
            Console.WriteLine(”                             “);

for (int i = 0; i <= sonuc.GetUpperBound(0); i++)

            {

for (int j = 0; j <= sonuc.GetUpperBound(1); j++)

                {

Console.Write(sonuc[i, j] + ” “);

                }
                Console.WriteLine(” “);
            }
            Console.ReadLine();
            #endregion
        }
Hepinize iyi çalışmalar..