C# Kombinasyon Hesaplama

Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde kullanıcıdan aldığımız değerlere göre kombinasyon hesaplamayı anlatacağım. Hadi başlayalım !
Kombinasyon, matematikte olasılık hesaplama, istatistik gibi bölümlerde sıkça kullanılan bir konu ve n ve r olmak üzere 2 tane baş kahramanı var. Örneğin n’nin r’li kombinasyonunu formülü ile hesaplıyoruz. Şimdi bizde kullanıcıdan n ve r değerlerini alalım ve bunları birer değişkene atayalım.
Console.Write("n Değerini Girin: ");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("r Değerini Girin: ");
int r = Convert.ToInt32(Console.ReadLine());
Formüle bakarsanız 3 tane faktöriyel hesaplama işlemi var fakat C#’ta hazır bir faktöriyel hesaplama fonksiyonu yok, o yüzden biz kendimiz halledeceğiz o işi ve 3 kere aynı işlemi yapmaktansa faktöriyel hesaplamayı bir fonksiyon olarak yazalım ve sonrasında istediğimiz yerde kullanalım. Daha önce faktöriyel hesaplamayı anlattığım yazıma buraya tıklayarak ulaşabilirsiniz. Yinede ufak bi üstünden geçelim. Faktöriyel 1’den x’e kadar olan sayıların çarpımıdır. Yani x! = 12345…x şeklindedir. Bizde bunu C# ile yapabiliriz elbette. Nasıl olacak dersenizde, for döngüsü ile 1’den istenen değere kadar dönecek ve her adımda bir önceki değer ile çarpacağız. Oluşturacağımız fonksiyonun adı FaktoriyelHesapla olduğunu varsayarsak, kodumuz şöyle olmalı;
int FaktoriyelHesapla(int x)
{
int faktoriyel = 1;
for(int i = 1; i <= x; i++)
faktoriyel *= i;
return faktoriyel;
}
Evet faktöriyel hesaplamayı yapan fonksiyonumuz hazır, şimdi kombinasyon hesaplamada kaldığımız yerden devam edebiliriz. n!, r! ve (n-r)! hesaplamalarını FaktoriyelHesapla fonksiyonunu kullanarak yapacak ve sonucu ayrı değişkenlere atayacağız. Yani;
int nFaktoriyel = FaktoriyelHesapla(n);
int rFaktoriyel = FaktoriyelHesapla(r);
int nEksirFaktoriyel = FaktoriyelHesapla(n - r);
Evet tüm hazırlıklar tamam, artık son olarak çarpma ve bölme işlemlerini yapalım ve işlemimizi tamamlayarak kullanıcıya bildirelim.
double sonuc = nFaktoriyel / (rFaktoriyel * nEksirFaktoriyel);
Console.WriteLine("{0}'ın {1}'li Kombinasyonu: {2}", n, r, sonuc);
Evet bu dersimizde bu kadardı, buraya kadar yazdığımız tüm kodları daha toplu olması için aşağıya bırakıyorum;
Console.Write("n Değerini Girin: ");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("r Değerini Girin: ");
int r = Convert.ToInt32(Console.ReadLine());
int FaktoriyelHesapla(int x)
{
int faktoriyel = 1;
for(int i = 1; i <= x; i++)
faktoriyel *= i;
return faktoriyel;
}
int nFaktoriyel = FaktoriyelHesapla(n);
int rFaktoriyel = FaktoriyelHesapla(r);
int nEksirFaktoriyel = FaktoriyelHesapla(n - r);
double sonuc = nFaktoriyel / (rFaktoriyel * nEksirFaktoriyel);
Console.WriteLine("{0}'ın {1}'li Kombinasyonu: {2}", n, r, sonuc);
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.