Tam Sürümünü Görmek İçin : faktöriyel almada printf tanımlanmamış fonksiyon hatası ?
kodu bloodshed ile derlemeye kalktığımda:
'printf' undeclared(first use this function)
hatası alıyorum
nerede yanlış yapıyorum?
// c de fonksiyon yazarak girilen sayinin
// faktoriyel degerini bulmak
double fakto( int rakam);
int main(){
int rakam;
printf("sayi gir\n");
scanf("%d",&rakam);
printf("Sayinin faktoriyeli: %f\n",fakto(rakam) );
return 0;
}
//arkaplanda gorulmeyen ama islemi yapan fonksiyon
double fakto(int rakam){
double denetci;
for(int sayac=1; sayac <=rakam; sayac++){
denetci=denetci*sayac;
}
return denetci;
}
stdio.h başlık dosyası programa dahil edilmiş mi?
teşekkürler .. ekledim ve şöyle değiştirdim .bu seferde ne girersem gireyim sonucu: 1 diye yazıyor.
#include <stdio.h>
long fakto( int rakam);
int main(){
int rakam;
printf("sayi gir\n");
scanf("%d",&rakam);
printf("Sayinin faktoriyeli: %ld\n",fakto(rakam) );
return 0;
}
//arkaplanda gorulmeyen ama islemi yapan fonksiyon
long fakto(int rakam){
double denetci;
denetci=1;
while(denetci>1){
for(int sayac=1; sayac <=rakam; sayac++){
denetci=denetci*sayac;
}
}
return denetci;
}
portalturks
27/05/2008, 18:19
denetci=1 yerine denetci==1 yazmayı denermisiniz?
Not: Ayrıntılı bilgim yok
Tam inceleyemedim ama ilk gözüme şu çarptı:
fakto fonksiyonunda denetci değişkenine 1 atamışsın ama while döngüsünde denetci>1 şart koşmuşsun.
Bu şekilde hiçbir zaman while döngüsüne giremezsin.
kodlarında küçük bi değişiklik yAptım
#include <stdio.h>
long fakto( int rakam);
int main(){
int rakam;
printf("sayi gir\n");
scanf("%d",&rakam);
printf("Sayinin faktoriyeli: %ld\n",fakto(rakam) );
system("PAUSE");
return 0;
}
//arkaplanda gorulmeyen ama islemi yapan fonksiyon
long fakto(int rakam){
double denetci;
denetci=1;
int sayac;
for(sayac=1;sayac<=rakam;sayac++)
{
denetci=denetci*sayac;
}
return denetci;
}
teşekkürler BSF çalışıyor ... (döngü ipucu için ayrıca teşekkürler)
portalturks
27/05/2008, 18:29
Artık programınız çalışıyor :)
enesgenc
27/05/2008, 18:40
#include <stdio.h>
#include <stdlib.h>
long fakto( int rakam);
int main()
{
int rakam;
printf("sayi gir\n");
scanf("%d",&rakam);
printf("Sayinin faktoriyeli: %ld\n",fakto(rakam) );
system("PAUSE");
main();
return 0;
}
//arkaplanda gorulmeyen ama islemi yapan fonksiyon
long fakto(int rakam)
{
double denetci;
denetci=1;
int sayac;
for(sayac=1;sayac<=rakam;sayac++)
{
denetci=denetci*sayac;
}
return denetci;
}
şu anda 12 ye kadar hesaplıyor sonra problem çıkıyor.
enesgenc
27/05/2008, 18:41
ben kodu incelerken çözmüşsünüz :D
portalturks
27/05/2008, 18:44
Çünkü double ın da hafızasında tutabildiği byte sınırlı:)
acehreli
27/05/2008, 20:41
Baska bir hata daha var: printf'e double gonderdigin halde "long int (%ld) gonderdim" diyorsun. :)
Neden 12'den buyuk sayilarin calismadigini forumda cok yakin zaman once iki kere konustuk. Arama sonuclarinda guzel bilgiler bulabilirsin. :)
Ali
acehreli
27/05/2008, 23:17
Yaniliyorum tabii... fakto'nun double dOndUreniyle %ld'nin ayni programda oldugunu sanmisim. Ama oyle degil: %ld diyen fakto'nun long dOndUrenini cagiriyor.
Ali
sekizbit
28/05/2008, 06:37
Bu aralar baya bir insanin 13! ile basi dertde sanirim :)
Forum Yazılımı : vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.