Ö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 ?
1/faktoryel her zaman 0 çıkar çünkü ikisi de int.
[mention=633767]@Amenofis[/mention] Evet, her zaman 0 çıkıyor. Yani kod doğru :) Teşekkürler.
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.
Hallettim. Teşekkürler. Konu kilitlenebilir.
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 .
[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
işlemi hesap makinesiyle kontrol ettiğimizde sonuçlar çelişiyor :)
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ı.