c# Desktop

TrendYol 2025 - 2026 Süper Lig Fikstür Kura Çekimini Yapan c# Console Uygulaması-4

Bir önceki dersimizde kuraları çekmiştik. Ancak bazı takımların maçları arka arkayaydı. Halbuki her hafta bir takım bir maç oynayacaktı. Önceki dersimizde verilen çıktıyı buna göre sıralamız gerekir. Verilen çıktı sonuçlarını takimlar dizisinde takımların sırasına göre yazarsak aşağıdaki gibi bir sonuç elde edilir.

3  4
2  4
2  3
1  4
1  3
1  2
Elde edilen sonucu her haftada 1, 2, 3, 4 olmak üzere sıralamamız lazım. Sıralama işlemiyle ilgili kodları yazmadan önce bir maçın hangi haftada oynanacağını belirlemek için 3 boyutlu bir dizi oluşturmalıyız.
string[,,] fikstur = new string[toplam, hafta, 2];
Artık fikstur yardımıyla hangi hafta hangi takımın maçı var, onu tanımlayabiliriz. Öncelikle fikstur dizisinde o hafta içinde aynı takımın maçı olup olmadığını kontrol etmek için Search isminde bir metod tanımlayalım.
        public static bool Search(int hft, string[] takim, string evSahibi, string misafir, string[,] fiks)
        {
            string bay = "";
            int takimSayisi = takim.Length;
            if (takimSayisi % 2 != 0)
            {
                bay = takim[hft];
                if (bay == evSahibi || bay == misafir)
                    return false;
            }
 
            for (int i = 0; i < fiks.GetLength(0); i++)
            {
                if (fiks[i, 0] != "" && fiks[i, 1] != "")
                {
                    if (fiks[i, 0] == evSahibi || fiks[i, 1] == misafir || fiks[i, 1] == evSahibi || fiks[i, 0] == misafir)
                    {
                        return false;
                    }
                }
            }
            return true;
        }
Daha sonra m dizisinden fikstur dizisine aktarılan satırın silinmesi için TrimArray metodunu tanımlayalım.
        public static string[,] TrimArray(int rowToRemove, string[,] originalArray)
        {
            string[,] result = new string[originalArray.GetLength(0) - 1, originalArray.GetLength(1)];
 
            for (int i = 0, j = 0; i < originalArray.GetLength(0); i++)
            {
                if (i == rowToRemove)
                    continue;
 
                for (int k = 0, u = 0; k < originalArray.GetLength(1); k++)
                {
                    result[j, u] = originalArray[i, k];
                    u++;
                }
                j++;
            }
 
            return result;
        }
Şimdi de diziye yeni boş kayıt sahası eklemek için Add metodunu tanımlayalım.
        public static string[,] Add(string[,] array, int adet)
        {
            int newLength = array.GetLength(0) + adet;
 
            string[,] result = new string[newLength, 2];
 
            for (int i = 0; i < array.GetLength(0); i++)
            {
                result[i, 0] = array[i, 0];
                result[i, 1] = array[i, 1];
            }
 
            return result;
        }
Bir de seçilen maçın bir daha seçilmemesi için gereken metodu tanımlayalım.
        public static bool[] sifirla(int deger)
        {
            bool[] s = new bool[deger];
            for (int i = 0; i < deger; i++)
                s[i] = false;
            return s;
        }
Artık fikstür ayarlamasını yapabiliriz.
            p = q = 0;
            int sat = 0;
            secim = sifirla(max);
            do
            {
                do
                {
                    sat = rastgele.Next(0, m.GetLength(0));
                    if (secim[sat] == false)
                    {
                        secim[sat] = true;
                        break;
                    }
                    else
                    {
                        int d = 0;
                        for (int i = 0; i < secim.Length; i++)
                        {
                            if (secim[i] == true)
                            {
                                d++;
 
                            }
                        }
                        if (d == secim.Length)
                        {
                            sat = m.GetLength(0) + 1;
                            break;
                        }
                        continue;
                    }
                } while (true);
 
                if (sat > m.GetLength(0) - 1)
                {
                    Array.Clear(mYedek, 0, mYedek.Length);
                    Array.Clear(m, 0, m.Length);
                    Array.Clear(fikstur, 0, fikstur.Length);
                    p = q = 0;
                    m = mDepo;
                    secim = sifirla(m.GetLength(0));
                }
 
                if (Search(p, takimlar, m[sat, 0], m[sat, 1], mYedek))
                {
                    if (p % 2 != 0)
                    {
                        string ara;
                        ara = m[sat, 0];
                        m[sat, 0] = m[sat, 1];
                        m[sat, 1] = ara;
                    }
 
                    mYedek[q, 0] = m[sat, 0];
                    mYedek[q, 1] = m[sat, 1];
 
                    m = TrimArray(sat, m);
                    q++;
                    secim = sifirla(m.GetLength(0));
                }
 
 
                if (q == hafta) // haftada oynanacak maç sayısı
                {
                    for (int i = 0; i < mYedek.GetLength(0); i++)
                    {
                        fikstur[p, i, 0] = mYedek[i, 0];
                        fikstur[p, i, 1] = mYedek[i, 1];
                    }
                    Array.Clear(mYedek, 0, mYedek.Length);
                    q = 0;
                    secim = sifirla(m.GetLength(0));
                    p++;
                }
 
            } while (m.GetLength(0) != 0);
 
            int ilk = 0;
            for (int i = toplam / 2; i < toplam; i++)
            {
                for (int j = 0; j < hafta; j++)
                {
                    fikstur[i, j, 0] = fikstur[ilk, j, 1];
                    fikstur[i, j, 1] = fikstur[ilk, j, 0];
                }
                ilk++;
            }
Şimdi de mini ligimize ait takımların ilk yarı maç listesini görüntüleyelim.
            for (int i = 0; i < toplam; i++)
            {
                Console.WriteLine("\n{0}. Hafta Maçları", (i + 1));
                Console.WriteLine(new string('─', 30));
                for (int j = 0; j < hafta; j++)
                {
                    Console.Write(String.Format("{0,15} - {1,-15}\n", fikstur[i, j, 0], fikstur[i, j, 1]));
                }
            }
Projeyi kaydedip çalıştırdığımızda aşağıdaki pencere ekrana gelir.
Fikstür çekilişimiz tamam. Bir sonraki derslerde hafta hafta maçların oynanması işlemini yapmaya çalışacağız. Makalemizi paylaşırsanız sevinirim.

 


İlgili Makaleler
Basit Veri Bağlama (Simple Data Binding)
Kompleks Veri Bağlama (Complex Data Binding)
Konsol Ekranında Kod Yazma ve Çalıştırma
Rastgele Seçilen Bir Sayıyı Basamaklarına Ayıran, Basamak Değerini ve Sayı Değerini Bulan c# Console Uygulaması
Verilen Değere Göre Tanımlı Fonksiyonu Çözen Programı c# Programıyla Kodlama
Form Sayfalarında Ayrıntılı ListBox Kullanımı
Veri Girişi Doğrulama (Input Validation)
Kredi Kartı Taksitlendirme İşlemini Yapan c# Uygulaması
TrendYol 2025 - 2026 Süper Lig Fikstür Kura Çekimini Yapan c# Console Uygulaması-6
TrendYol 2025 - 2026 Süper Lig Fikstür Kura Çekimini Yapan c# Console Uygulaması-4
Ayt 2019 Rasyonel Sayı ve Logaritmik Sayı Sorusunun Çözümüne Ait c# Console Uygulaması
c# Uygulamalarında Formu MDI Form Olarak Kullanma
Kaçan Buton Oyununu Yapan c# Uygulaması
c# Form Sayfasında Editör Uygulamasını Yapma
Windows Form Uygulamasında Veriyi Bir Formdan Diğerine Aktarma
Klavyeden Girilen Kelimeyi Kelebek Deseninde Yazdıran c# Console Uygulaması
Nesne Tabanlı Programlamada Sınıfların ve Özelliklerin Erişim Türlerini Belirlemek
Olaylar(Events)
Ekrana Merhaba Dünya Mesajını Görüntüleyen Form Uygulamasını c# Diliyle Yapma
Rakamlardan Oluşan Tuş Takımını Hesap Makinesi Görünümünde Tasarlayan Form Uygulaması

Yorum Ekle
   
Kötü İyi