Şimdi Ara

C# kombinasyon kodu yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
688
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Ders hocamızın verdiği bir ödevi çözebilmem için kombinasyon işlemi gerekiyor fakat 200'ün üzerindeki bir sayıyı işleme tabii tutunca NaN hatası veriyor. 1000 ve üzerindeki sayılarla işlem yapmak için ne değişiklik yapmak gerekir? Bu kod ile 170 in 2 li kombinasyonunu alabiliyorum fakat yüksek sayılar hata veriyor maalesef (Not : matematik kütüphanelerini kullanmak yasak)

    using System; 
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication5
    {
    class Program
    {
    public static double faktoriyel(double sayi)
    {
    double faktoriyel = 1;
    for (double i = 1; i <= sayi; i++)
    {
    faktoriyel *= i;
    }
    return faktoriyel;
    }
    public static double kombinasyon(double sayi1,double sayi2)
    {
    double kombinasyon = faktoriyel(sayi1) / (faktoriyel(sayi2)*faktoriyel(sayi1-sayi2));
    return kombinasyon;

    }
    static void Main(string[] args)
    {
    double a = kombinasyon(170,2);
    Console.Write(a);
    Console.ReadKey();
    }
    }
    }







  • hocam max değeri geçiyor 200'ün faktöriyelini alınca o yüzden sonsuz döndürüyor ve çarpıp bölünce de nan oluyor

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Microsoft Specialist

    hocam max değeri geçiyor 200'ün faktöriyelini alınca o yüzden sonsuz döndürüyor ve çarpıp bölünce de nan oluyor

    evet hocam doğru söylüyorsunuz peki bir fikriniz var mı nasıl yapılabileceği hakkında benim aklıma hiç bir şey gelmiyor da
  • dipoldipol D kullanıcısına yanıt
    Hocam öncelikle double yerine int de yapabilirsin. int'i int64 yani long yapsan da max değeri aşıyor. BigInteger gerekiyor sanırım. 200den büyük değerleri de kapsaması mı gerekiyor? Gerekmiyorsa direkt geçersiz değer girilince hata versin tekrar sorsun daha küçük değer girin diye.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Microsoft Specialist

    Hocam öncelikle double yerine int de yapabilirsin. int'i int64 yani long yapsan da max değeri aşıyor. BigInteger gerekiyor sanırım. 200den büyük değerleri de kapsaması mı gerekiyor? Gerekmiyorsa direkt geçersiz değer girilince hata versin tekrar sorsun daha küçük değer girin diye.

    Evet hocam ulong dan decimal'e kadar her şeyi denedim 1453! in kombinasyonlarını bulmam gerekiyor heralde farklı bir algoritma çıkartmam gerekecek
  • dipoldipol D kullanıcısına yanıt
    BigInteger kullanamıyor musun yani?
    System.Numerics.BigInteger olması lazım

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • quote:

    Orijinalden alıntı: Microsoft Specialist

    BigInteger kullanamıyor musun yani?
    System.Numerics.BigInteger olması lazım

    Oldu hocam beni büyük bi dertten kurtardınız teşekkür ederim
  • Yapay Zeka’dan İlgili Konular
    C yardım
    24 yıl önce açıldı
    C# ile html kodu yazmak
    10 yıl önce açıldı
    Daha Fazla Göster
  • dipoldipol D kullanıcısına yanıt
    Rica ederim her zaman

    < Bu ileti mini sürüm kullanılarak atıldı >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.