Ubuntu Türkiye

Yazılım => Programlama => C/C++ => Konuyu başlatan: loser - 26 Kasım 2017 - 23:26:08

Başlık: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: loser - 26 Kasım 2017 - 23:26:08
Öncelikle herkese merhaba, umarım güzel bir gün geçiriyorsunuzdur.
C diliyle uğraşıyorum ve elimdeki kaynakların her detayına kadar öğrenmeye çalışıyorum.
Benim sorum şu, gördüğüm matematiksel bir fonkisyonu C'ye geçimek.

Örneğin burada e=1+1/1! + 1/2! + 1/3! ......
diye gidiyor. Bende şöyle bir şey yazdım; (Şu an 2. ünitedeyim bu yüzden bu ünitede öğrendiklerimin dışına çıkmadım)

#include <stdio.h>
/* faktoriyeli hesapla,1'e böl, yedeğe kat. */
int main(){
int fonksiyon=1,yedek,faktoriyel,sayac=1,deger,s;
printf("faktoriyeli giriniz.\n");
scanf("%d",&faktoriyel);

yedek=faktoriyel;
deger=1;


while(deger<=yedek){
faktoriyel=deger;
         while(sayac<yedek){
             faktoriyel=faktoriyel*(yedek-sayac);
             sayac++;
         }
    fonksiyon=fonksiyon+(1/faktoriyel);
    deger++;
}

    printf("Sonuc=%d\n",fonksiyon);
    return 0;

}


Doğruluğu nedir ?


Başlık: Ynt: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: Amenofis - 27 Kasım 2017 - 12:54:30
1/faktoryel her zaman 0 çıkar çünkü ikisi de int.
Başlık: Ynt: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: loser - 27 Kasım 2017 - 22:28:19
[mention=633767]@Amenofis[/mention] Evet, her zaman 0 çıkıyor. Yani kod doğru :) Teşekkürler.
Başlık: Ynt: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: edge35 - 28 Kasım 2017 - 00:01:33
Sanırsam demek istediği kodun yanlış çalıştığıydı. Sonuç "0" olmamalı, "0,xxxx" olmalı, fakat senin kodunda int olarak tanımladığın için virgülden sonrasını atıyor.

İnt olarak tanımladıklarını float olarak değiştirip tekrar deneyebilirsin.
Başlık: Ynt: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: loser - 28 Kasım 2017 - 00:12:56
Hallettim. Teşekkürler. Konu kilitlenebilir.
Başlık: Ynt: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: soldanatar - 03 Aralık 2017 - 02:40:01
int değerlerini float'a çevirdikten sonra yazdığın kodun doğruluğunu test ettin mi ? yukarıdaki kodu test ettiğinde sonucun yanlış olduğunu fark etmen lazımdı. Kodunda faktöryeli hesaplayan bir kod bloğu yok  .  Halen sıkıntı yaşıyorsan eğer sana tavsiyem öncelikle sadece faktöryel hesaplayan bir fonksiyon oluşturman ve o fonskiyon değerini gerekli yere koyman .
Başlık: Ynt: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: edge35 - 03 Aralık 2017 - 16:22:38
[mention=634016]@soldanatar[/mention] bi tekrar kontrol edin isterseniz. while döngüsünün içerisindeki while döngüsü faktoriyel hesaplıyora benziyor
Başlık: Ynt: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: soldanatar - 06 Aralık 2017 - 18:40:44
işlemi hesap makinesiyle kontrol ettiğimizde sonuçlar çelişiyor :)
Başlık: Ynt: Matematiksel fonksiyonları C'ye geçirmek.
Gönderen: .py - 06 Aralık 2017 - 18:47:46
Alıntı yapılan: soldanatar - 06 Aralık 2017 - 18:40:44
işlemi hesap makinesiyle kontrol ettiğimizde sonuçlar çelişiyor :)

Aynen hatalı.