c# Faktöriyel bulma

Yılmaz Kanatlı

Hectopat
Katılım
8 Mayıs 2018
Mesajlar
11
1/1! + 1/2! + 1/3! +...+1/n! toplamını klavyeden girilen n değerine göre faktöriyelini hesaplayınız. Faktöriyel() fonksiyonu yazılacak. (c# kodları)

Diye bir sorum var arkadaşlar. Yardımcı olabilecek olan var mı?
 
Konsol uygulaması ile nasıl yapıldığını bilmiyorum. İstersen form uygulamasından yapıp atabilirim. For kullanarak yapılacak.
 
Soruyu tam okumadan yazmışım pardon Düzenleyip tekrar yazacağım
---
C#:
    public static void Main()
    {
        double sonuc = 0;
        for(int i = 1; i <= 5; i++) {
            sonuc += (1.0 / faktoriyel(i));
        }
        Console.WriteLine(sonuc);
    }
   
    public static int faktoriyel(int sayi) {
        return (sayi == 1) ? 1 : sayi * faktoriyel(sayi - 1);
    }


i <= 5 dediğim yere hangi sayı isteniyorsa onu koyacaksınız. Input alarak da koyabilirsiniz.
 
Son düzenleme:
Form uygulaması için şöyle

Burada 2 label, 2 TextBox, 1 tane button oluşturuyoruz.
1- Label'leri "Girdi" ve "Çıktı" yazmak amacıyla koydum, tasarım için yani.
2- TextBox'lardan üsttekinin adı textBox1, alttakinin adı textBox2. Üsttekine sayı gireceğiz alttakine de faktöriyeli çıkacak.
3- textBox1'e sayıyı girdikten sonra button'a basacağız öyle çıkacak faktöriyeli.

Kodlar da şöyle
------------------------------------------------------------------------------------------------------
int girdi = 1; // bu her sayı olabilir
List<int> i_degerleri = new List<int>();
private void button1_Click(object sender, EventArgs e)
{
girdi = int.Parse(textBox1.Text); //int.parse string değer olan TextBox'ı integer değerine çevirmek içindi.
for (int i = 1; i <= girdi; i++)
{
i_degerleri.Add(i);
}

int charpim = 1; // sadece 1 yazılmalı
for (int i = 1; i < i_degerleri.Count(); i++)
{
charpim *= i_degerleri;
}
textBox2.Text = charpim.ToString(); // string değerindeki "toplam" değişkenini strine çevirdik textbox string türünden olduğu için.
------------------------------------------------------------------------------------------------------
Anlamadığın yerleri sorabilirsin.
 
Son düzenleyen: Moderatör:
Galiba kodlarda hata var düzgün çalıştıramadım . klavyeden girilen dediğine göre ReadLine olacak sanırım.
 
Pratik olan kod bu fakat mantığını kavrayamadıysan daha temel şekilde:

[CODE title="C#"]public static void Main(string[] args)
{
int n;
float toplam=1;

n=Convert.ToInt32(Console.ReadLine());

for(int i=2; i<=n; i++){
toplam+=(1 / Convert.ToSingle( faktoryel2(i) ) );
}

Console.WriteLine(toplam);
}

public static int faktoryel2(int sayi ){
int faktoryel=1;
for(int j=sayi; j>0; j--){
faktoryel*=j;
}
return faktoryel;
}[/CODE]
 
Son düzenleme:

Kod yazarken kod braketlerinin içine yazarsan daha düzgün görünür.
 
hocam sizdeki çıktı gözüntüsünü atabilir misiniz
 
Herkes standart çözümler atmış. Biraz da Lambda (Functional) örneği görün.
Belki bazılarının ilgisini çeker.

C#:
private static Func<long, long> Fact = n => n < 2 ? 1 : n * Fact(n - 1);

private static Func<int, double> SolveLambda = n => Enumerable.Range(1, n + 1).ToArray().Select(v => 1.0 / Fact(v)).Sum();
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…