Şimdi Ara

Değişik bir hesaplama yardım..

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
290
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar. Bir sorunum var. Programı yazdım ama sonuçla ilgili bir problem oluşuyor.
    Yazdığım program klavyeden bir "N " değeri aldırıp onunla

    (2^n/n!)+(2^n-1 / [n-1]!)+........+ (2^1/1!)
    Şeklinde hesaplaması gerekiyor. yazdığım programla bunu yaptırabildim ama 16 ve 17değerlerine kadar başarılıyım . 16nın değeri 17den büyük geliyor . hata orda başlıyor. normalde küsüratlıda olsa 17nin büyük olması lazım.
    Anlayan arkadaşlar lütfen yardımcı olablir mi.??




    #include<stdio.h> 
    #include<conio.h>

    double fonk(int y);

    int main()
    {
    int n;
    printf("n degerini giriniz :");
    scanf("%d",&n);

    printf("\n sonuc : %0.20f",fonk(n));
    getch();
    return 0;
    }

    double fonk (int y)
    {double sonuc,cevap=0;
    int carpim=1,fak=1,i;

    while(1<=y)

    {
    for(i=1;i<=y;i++)
    {
    carpim=carpim*2;
    fak=fak*i;
    }
    sonuc=(double)carpim/fak;
    cevap=(double)cevap+sonuc;
    carpim=1;
    fak=1;
    y=y-1;
    sonuc=0;

    }
    return cevap;
    }







  • Merhaba; Dediğiniz Formulu Methodlar Kullanarak Kendim Oluşturdum Java İle.
    Bende 16, 17, 18.. Sonrası Değerlerin Hepsi Aynı Çıkıyor. (=~ 6.38905609893065)
    Zannedersem double Sayilarin Yuvarlanması ile, Programlama Dili Bazlı Bir Sapma var, yada
    Değişiklikler Çok Küçük Olduğu İçin Gözardı Ediliyor.

     
    // System.out.println(getSonuc(16));
    public double getFact(int n)
    {
    double fact = 1;
    for (int i = n; i>=2; i--)
    fact *= i;
    return fact;
    }

    public double getPart(int n)
    {
    return ( Math.pow(2, n) / getFact(n) );
    }

    public double getSonuc(int n)
    {
    double tot = 0;
    for (int i = n; i>= 1; i--)
    tot += getPart(i);
    return tot;
    }


    Daha Önce Kullanmadım Ama, Bu Tip İşlemler İçin BigDecimal Tarzi Primitive Type Olmayan Türler Var.
    Hesaplamanızı Bu Tipi Kullanarak Yapmayı Deneyebilirsiniz.
    BigDecimal 4 İşlem :
    http://www.volkantokmak.com/blog/2009/12/java-math-bigdecimal-ile-dort-islem/
    BigDecimal Hassasiyetini Gösteren Bir Örnek :
    http://www.java2s.com/Code/Java/Development-Class/UsingBigDecimalforPrecision.htm




  • teşekür ederim vakit ayırıp cevapladıgınız için
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.