Mustafa Kemal Üniversitesi Bilgisayar Mühendisliği Bölümü Ders Materyal Ve Notları

Sponsor

27 Ekim 2013 Pazar

C# Faktöriyel Hesaplama Programı

Posted by samgar at 19:03 0 Comments
Bu yazıda c# form ekranında faktöriyel işlemini gerçekleştiren bir programı göstereceğim. Aşağıda form ekranını görebilirsiniz.
Form ekranında anlatılacak bir şey yok diye düşünüyorum. Şimdi de kod kısmını paylaşıyorum.

İlk olarak c#'ta bir sayının faktöriyeli nasıl alınır onu anlatayım.
for (int i = 1; i <= sayi1; i++)
{
 faktor1 = faktor1 * i;
}
for döngüsü ile daha önceden atadığım sayi1 değerini döngüye sokuyorum i değeri sayi1 den küçük veya eşit olduğu sürece   faktor1 = faktor1 * i işlemini yapacaktır. Yani şu işlem yapılıyor 5!=1*2*3*4*5 demek olduğu için sayi1 değerini for döngüsüne sokarak sürekli bir artırdık ve 1,2,3,4,5 sayılarına ulaştık bu sayıları tek tek faktor1 değişkeni ile çarptığımızda faktöriyelin sonucuna ulaşmış olduk. Şimdide programın temel anlatımına geçelim.

Şuan bütün kodları aşağıda paylaşacağım fakat öncesinde bir kaç açıklama yapmak istiyorum.

Buradaki kodlarda programın faktöriyel işlem yapması sağlanmıştır. Programın yaptığı işlem şu şekildedir; K!/L!(K-L)!.
Bir önemli husus ise matematik kurallarına göre payda paydan büyük olursa bu işlem tanımsız olur. C# ta ise bu durumda program hata üreteceği için hesaplama işlemi try catch  finally yapısı ile yapılmıştır. Bu durumda catch yapısı ile hatayı tespit ederek önceden önlem almış oldum.

Dikkat edilmesi gereken diğer bir husus ise işlem basamaklarından (K-L)! işlemidir. Bu işlem sırasında K L'den küçük olabilme ihtimali olduğu için her zaman pozitif bir sayı elde etmek için mutlak değerini almak gerekir. Bu işlemi c# da şu şekilde yapabiliriz. Math.Abs(sayi1 - sayi2) Abs ifadesi mutlak sayıyı ifade etmektedir.

İsterseniz programın dosyalarını da indirebilirsiniz. İndirmek için Tıklayınız...
private void button1_Click(object sender, EventArgs e)
        {
            int sayi1, sayi2, faktor1 = 1, faktor2 = 1, faktor3 = 1, sonuc;
            sayi1 = Convert.ToInt32(textBox1.Text);
            sayi2=Convert.ToInt32(textBox2.Text);
            lblsayi1.Text = Convert.ToString(sayi1);
            lblsayi2.Text = Convert.ToString(sayi2);
            lblaltsayi1.Text = Convert.ToString(sayi1);
            lblaltsayi2.Text = Convert.ToString(sayi2);
     
            groupBox1.Visible = true;
            try
            {
                for (int i = 1; i <= sayi1; i++)
                {
                    faktor1 = faktor1 * i; 
                }
           
                for (int j = 1; j <= sayi2; j++)
                {
                    faktor2 = faktor2 * j;
                }
                for (int k = 1; k <= Math.Abs(sayi1 - sayi2); k++)
                {
                    faktor3 = faktor3 * k;
                }
                sonuc = faktor1 / (faktor2 * faktor3);
                textBox3.Text = Convert.ToString(sonuc);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Payda paydan büyük çıkıyor...");
            }
            finally
            {
                faktor1 = 1;
                faktor2 = 1;
                faktor3 = 1;
            }
        }
        private void btntemizle_Click(object sender, EventArgs e)
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            lblsayi1.Text = "";
            lblsayi2.Text = "";
            lblaltsayi1.Text = "";
            lblaltsayi2.Text = "";
            groupBox1.Visible = false;
        }
Çalışma anından görünüş

Bu Yayını Paylaş

Takipçi Ol

Mail adresinizi kaydedelim ilk sizin haberiniz olsun.

0 yorum:

Sponsor

Yazılarım Korunuyor

Yandex Metrica

Yandex.Metrica

Toplam Sayfa Görüntüleme Sayısı

back to top