C++ da girilen sayının faktöriyelini almak

De_Barkot

New member
Katılım
14 Eyl 2005
Mesajlar
1,193
Reaction score
0
Puanları
0
Yaş
38
Konum
..İzmir..
#include <stdio.h>
#include <conio.h>
main()
{
clrscr();
int f,x,y;
y=1; x=1;
printf("Fonksiyonu alınacak sayıyı giriniz="); scanf("%d",&f);
gitt:
x=x*f;
f=f-1;
if (f>0) goto gitt;
printf("sonuç =%d",x);
getch();
}
 
goto tehlikeli bi ifadedir, kullanmanızı tavsiye etmem, büyük programlar yazıyorsanız karmaşaya yol açacaktır onun yerine while/ do while işinizi görür

ayrıca faktöriyel almada en güzel yöntem özyinelemeli fonksiyonlardır
 
WiLdBoY' Alıntı:
goto tehlikeli bi ifadedir, kullanmanızı tavsiye etmem, büyük programlar yazıyorsanız karmaşaya yol açacaktır onun yerine while/ do while işinizi görür

ayrıca faktöriyel almada en güzel yöntem özyinelemeli fonksiyonlardır

Çok biliosan sen yap bizde bakalım nasıl yapılıomuş.. Ben böle biliodum böle yaptım.
 
#include <stdio.h>
#include <conio.h>
int fakt(int n)
{
if (n>1)
{ return n * fakt(n-1); }
else return n;
}

int main()
{
int f,fs;
printf("Fonksiyonu alınacak sayıyı giriniz="); scanf("%d",&f);
fs = fakt(f);
printf("sonuç =%d",fs);
getch();
return 0;
}
 
WiLdBoY' Alıntı:
goto tehlikeli bi ifadedir, kullanmanızı tavsiye etmem, büyük programlar yazıyorsanız karmaşaya yol açacaktır onun yerine while/ do while işinizi görür

ayrıca faktöriyel almada en güzel yöntem özyinelemeli fonksiyonlardır

senin programın devamlı function call yapıyor, De_Barkot'un kodu seninkinden daha hızlı :)
 
balyoz' Alıntı:
senin programın devamlı function call yapıyor, De_Barkot'un kodu seninkinden daha hızlı :)

nerden biliyorsun ?? kaç platformda test ettin ?? hangi işlemcileri denedin ??
sıcaklık derecesi kaçtı ?? bunlara hesaba kattın mıda kodun hızlı oldugunu söylüyorsun ahaha güleyim bari ...

evet sen herhalde Borland Enterprise'ın yetkili kod test edicisisindir. Allah bilir de hayatında 1 kere bile debug yaparak kodların nasıl işlev yaptıgını bile izlememişsindir bence boş laflarla çeneni agrıtma !
 
Tartışma Platformu :D V2.1 Cıktı :p,


edit : Bu arada bunun gibi kısa programlarda goto komutunun zararı ne olucak ben onu anlamadım :eek:
 
arkadaşlar yazsın uzunca satırlık bir programlar o zaman olayın vahimligini anlarlar....
 
saolun ark. bilgiler için
 
AdmiX' Alıntı:
nerden biliyorsun ?? kaç platformda test ettin ?? hangi işlemcileri denedin ??
sıcaklık derecesi kaçtı ?? bunlara hesaba kattın mıda kodun hızlı oldugunu söylüyorsun ahaha güleyim bari ...

evet sen herhalde Borland Enterprise'ın yetkili kod test edicisisindir. Allah bilir de hayatında 1 kere bile debug yaparak kodların nasıl işlev yaptıgını bile izlememişsindir bence boş laflarla çeneni agrıtma !
gerzek herif,bu kod icin debug yapmaya ne gerekvar, n! icin n tane fonksiyon cagırıyor hepsinde n tane if kontrol ediyor n tane sayı donduruyor bunları hafızada tutuyor sonra hesaplıyor. Ilk kodda sadece if kontrolu yapılıyor. memory bile kullanmıyor.
özyinelemeli fonksiyonların kompleksitesi herzaman daha yuksektir. :cool:
 
yaz bi ara büüük bir program o zamanlar anlarsın at y.....gı !! ok ???
bidaa da gerzek filan diyerek konusma akıllı ol !!!
 
#include <stdio.h>
#include <conio.h>
int main()
{
int a,i,sonuc=1;

printf("Pozitif Tamsayi Giriniz:\n ");
scanf("%d",&a);
for(i=1 ; i<=a ; i++)
sonuc=sonuc*i;
printf("Girilen Sayinin Faktoriyeli:\n %d",sonuc);
getch ();
return 0;
}



bu da benim faktöriyelim ;)
 
Wildboy ve paroniac arkadaslarimizin yazdiklari kodlar profosyenele en yakinlaridir. Ilk arkadasimizin kullandigi goto ifadesi ise tamamen iyi egitimsiz programcilarin isidir.
Sen ne biliyorsun profosyeneli filan dersen bu isin dersini universitede aliyorum.
Bu arada wildboyun functioncall u sadece 1 kere olmaktadir.
 
zaten goto parametresi c kodunun en büyük hatasıdır bence... yapısal olarak tamamen kolaya kaçmaktır... ;) aklınızda bulunsun... ben de bilgisayar mühendisliğinde okuyorum... goto profosyonelce değil ;)
 
yeditepe dicem oda içimizden biri sen bu işin eğitimini alıyosun da ünide
nedense çok belli ediyosun

wild bildiğim kadarıyla profesional biliyo:)
daha ne tartışıyosunuz anlamadım

ayrıca admix sende böle propokasyon lara gelme belli oda taş atanlardan biri:)
 
en güzel en basit hali en yeni C++'a göre

#include<iostream>
using namespace std;
int main(){

int fac=1,a;
cout<<"Faktoriyeli alınacak sayıyı giriniz"<<endl;
cin>>a;

while( a<0){
cout<<"negatif sayıların faktoriyeli alınamaz uygun sayıyı tekrar giriniz"<<endl;
cin>>a;}

for(int i=1;i<=a;i++) fac=fac*i;

cout<<a<<"! ="<<fac<<endl;

return 0;
}
 
Bence goto kullanılarak yazılan o ilk kod dogru we hızlı. Fakat Recursive Function kullanmak her zaman en pratigi we prof. işi olandır. Tamam 5 satırlık kod bu yazılan fakat ben faktoriyel uygulamasını buyuk bir programda kullanacaksam we cok kez faktoriyel hesaplatmam gerekecekse, aynı kodu defalarca yazmam gerekir weya defalarca goto mu kullaniyim. AdmiX arkadaşımızın da anlatmaya calıştıgı bu sanırım. katılıyorum. Fonksion cagırmak en pratigi olacaktır.

Sonuc itibariyle Herkesin kodlama stili farklıdır we aynı işlevdeki bir kod farklı şekillerde yazılabilir.
 
Geri
Üst