İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# İki Sayı Arasındaki 3e ve 5e Bölünen Sayıları Bulmak

C# İki Sayı Arasındaki 2ye, 3e, 5e, ve 7ye Tam Bölünen Sayıları Bulmak

C# İki Sayı Arasındaki 3e ve 5e Bölünen Sayıları Bulmak
C# İki Sayı Arasındaki 3e ve 5e Bölünen Sayıları Bulmak
+ - 0

Merhaba, C# İki Sayı Arasındaki 3e ve 5e Bölünen Sayıları Bulmak yazım ile C# Eğitim Seti ‘me devam ediyorum. Tüm bölünebilme kurallarına uyan bu metodumuz bir çoğunuzun işine yarayabilir. Evet yanlış görmediniz. Tek bir metot ile iki sayı arasında kalan sayılar için tüm bölünebilme kurallarını uygulayabileceğiz. Bu derste yer alan metotta, dışarıdan girilen iki sayı arasında kalan sayıların, yine dışarıdan girdiğimiz sayılara tam bölünüp bölünmediği kontrol edeceğiz.

Başlığı bu kadar uzun yazamayacağım için 3e ve 5e bölünen şeklinde yazdım.  Kısacası bu yazı da tüm C# bölünebilme kurallarını uyguluyor olacağız .

C# İki Sayı Arasındaki 3e ve 5e Bölünen Sayıları Bulmak

Buradan serinin ilk yazısına gidip önemli metotlarımıza bakabilirsiniz. Özellikle sayısal değer kontrolü metodumuz önemlidir arkadaşlar. Sitemde daha önce bu konu hakkında da çeşitli dersler yazmıştım. Arama kısmından aratıp bulabilirsiniz.

Kodlar biraz karmaşık gelebilir. Aklıma gelen ilk yöntem ile yazdım. Bu işlemi checkbox ‘lar kullanıp işaretli olan sayıları kullanarak bölünebilmeleri kontrol et diyebilirdim ama çok uzun olurdu. Bu sebeple olabildiğince kısa bir şekilde yazmak istedim. Kodların arasında yorum satırları zaten var. Ek olarak kodların alt kısmında da detaylıca açıklamaları görebilirsiniz.

Öncelikle form tasarımını görelim. Buttonun üzerinde bölünebilirlik istediğimiz sayıları aralarına virgül atarak yazıyoruz.

C# İki Sayı Arasındaki 3e ve 5e Bölünen Sayıları Bulmak

 

 

Şimdi kodlarımızı verelim.

        private void btn_sayilara_bolunebilenler_Click(object sender, EventArgs e)
        {
            string[] bolenler = txt_bolenler.Text.Split(','); // kalansız bölümü kontrol etmek istediğimiz tüm sayılar
            int[] tutanlar; // sıradaki sayı, yukarıdaki sayılardan kaç tanesine kalansız bölünebiliyor olduğunu index numarası üzerinden tutacağız
            int tutan_adet = 0; // karşılaştırmak için kullancağız.
            ListeTemizle();
            if (SayisalKontrol())
            {
                for (double i = sayi1; i <= sayi2; i++) // iki sayı arasında dönecek
                {
                    // her yeni sayıda "tutan" bilgilerini sıfırlamamız gerekiyor. 
                    tutan_adet = 0; // sıfırladık
                    tutanlar = new int[bolenler.Count()]; // yeniden tanımladık.


                    for (int j = 0; j < bolenler.Count(); j++) // bölenler listesindeki tüm sayıları kontrol edeceğiz.
                    {
                        if (i % Convert.ToInt16(bolenler[j]) == 0) // seçilmiş sayıyı, sıradaki bölen ile tam bölünüp bölünmediğini kontrol ediyoruz.
                            tutanlar[j] = 1; // tutanları işaretliyoruz.
                        else
                            tutanlar[j] = 0; // tutmayanları da işaretliyoruz.
                    }

                    for (int k = 0; k < tutanlar.Count(); k++) // tutanları kontrol edeceğiz.
                    {
                        if (tutanlar[k] == 1) // tutanları kontrol ediyoruz.
                            tutan_adet++; // kaç tanesi tuttu ise sayısını alıyoruz
                    }
                    if (tutanlar.Count() == tutan_adet) // tutanlar listsindeki kaç tanesinde kaç tane 1 olduğu ile ile tutan adetler aynı ise seçilen sayıyı tüm bölenler bölebiliyor demektir.
                    {
                        ListeyeEkle("Tüm bölenlere tam bölünebilen sayı : " + i.ToString());
                    }
                }
            }
        }

Kodlarımızı açıklamak gerekirse;

  • bolenler dizisinde, dışarıdan girilen ve bölünebilirlik kontrolü istediğimiz sayıları tutuyoruz. Split metodu kullanarak ( , ) ile parçalıyoruz.
  • tutanlar dizisi, seçilen bir sayının örneğin 240 olsun, bölünebilirlik kontrolü istediğimiz sayılar örneğin 2,3,4,5 olsun hangisine bölünebildiğini index sırası üzerinden tutuyoruz.
    • 240 sayısı için 4 tane kural koyduk. Eğer 240 sayısı 2,3,4,5 bölenlerinin hepsine kalansız bölünüyor ise [1,1,1,1] olacak, Yani tutanlar dizisinde 4 tane 1 olacak. E bizde 4 tane kural koyduk. O halde 4 kural = 4 başarı o halde bu sayı her kurala uyuyor demektir.
  • kaç tane kuralın tuttuğunu tuttuğumuz değişkeni tanımladık.
  • for döngüsü içinde, her sayı için değişkeni sıfırladık ve yeni bir dizi başlattık.
  • bolenler listesindeki tüm sayılar için, seçilen sayıyı tek tek kontrol edeceğiz. Bu sebeple j döngüsünü başlattık.
  • i döngüsünde seçilen sayıyı, bolenler dizisindeki tüm sayılar için tek tek mod alma işlemi ile kontrol ettik.
  • eğer i döngüsünde seçilen sayı, j döngüsünde seçilen sayıya tam bölünüyorsa, tutanlar dizisindeki index karşılığına 1 yazdık. Tutmuyor ise 0 yazdık.
    • bu 1 leri sayarak kaç tanesinin tuttuğuna bakacağız.
  • k döngüsü ile tutanlar dizisindeki tutanları bulmak için bir döngü başlattık.
  • k döngüsünde, tutanlar dizisindeki tüm 1 leri sayıyoruz.
  • eğer tutanlar dizisindeki 1 ‘lerin sayısı, tutan_adet değişkeni ile aynı ise i döngüsünde seçilen sayı, istenen tüm kurallara uyuyor demektir.
  • Böylece istediğimiz sayıları bulabiliyoruz.

Hadi gelin 1 ile 1000 arasındaki 2’ye, 3’e, 4’e ve 5’e bölünebilen sayıları bulalım…

C# İki Sayı Arasındaki 3e ve 5e Bölünen Sayıları Bulmak

Gördüğünüz gibi verdiğimiz tüm kurallara uyanlar listeye ekleniyor. Yukarıdaki videoyu izleyerek diğer denemeleri de görebilirsiniz.


C# İki Sayı Arasındaki 3e ve 5e Bölünen Sayıları Bulmak yazımda bu kadardı arkadaşlar.

Diğer yazılarımda görüşmek üzere. Umarım faydalı olmuştur. Aşağıdaki linklerden eğitim seti sayfasına ve github projesine ulaşabilirsiniz. C# Eğitim Seti sayfasına gitmek için tıklayınız.  Bu yazı serisi için özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

Hazırladığım içerikleri faydalı buluyorsanız yorum atarak ve yazılımla ilgilenen arkadaşlarınızla paylaşabilirseniz çok mutlu olurum. Discord’a katılmayı unutmayın.

Sağlıcakla ve kodla kalın….

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)