Bu konudaki kullanıcılar: 2 misafir, 1 mobil kullanıcı
8
Cevap
12344
Tıklama
0
Öne Çıkarma
faktöriyel hesaplayan program algoritması?

D Dankır Konu Sahibi
14 yıl (262 mesaj)
Mesela 5 girdiğimizde 5! i hesaplayacak program algoritmasını nasıl yazarız?




B Bulldog
14 yıl (395 mesaj)
quote:

Orjinalden alıntı: dunker1

Mesela 5 girdiğimizde 5! i hesaplayacak program algoritmasını nasıl yazarız?


vSonuc := 1;

for i in 1..n
loop
vSonuc := vSonuc x i;
end loop;

return vSonuc;

gibi bişey olsa gerek.


Bu mesaja 1 cevap geldi.

I ISIS
14 yıl (386 mesaj)
- başla
- ekrandan bir sayı oku
- sayı, işaretsiz tamsayı olmalı
. . eğer kullanıcı 2'den küçük sayı girdiyse, bitir'e git
. . eğer sayı negatif ya da kesirli ise HATA'ya git
- Faktör'e öndeğer olarak 1 aktar
- I=2'den sayı'ya kadar yinele :
. . . . Faktör değişkeninin içeriğini döngü değişkeni olan I ile çarp ve Faktöre aktar
. . . . (Faktör <- Faktör * I)
- yineleme döngüsü sonu (döngü değişkeni 1 artırılıp, döngü başına gidilir. döngü bitince aşağıdaki satır ile devam edilir)
- ekrana Faktör değişkenini yaz
- başla'ya git
- HATA : ekrana "1'den büyük tamsayı girin, çıkmak için sıfır giriniz" yaz; başla'ya git
- bitir

Parantez içindeki yazılar açıklama için, algoritmanın parçası olmak zorunda değil..




I ISIS
14 yıl (386 mesaj)
quote:

Orjinalden alıntı: amone
özyineli fonksiyonlarla da yazılabilir

Evet. "stack" derinliğine dikkat ederek olur. Ama arkadaş algoritma istemişti..

Ben pascal'dan örnek vereyim :
 
1-Yukarıdan aşağıya programlama :
// tanımları ve denetimleri atlıyorum.
:
Faktoryel := 1;
for I:=2 to Sayi do
Faktoryel := Faktoryel * I;
:

2- Özyineli programlama :
:
function FaktoryelHesapla(Sayi : Dword) : Dword;
begin
if Sayi <= 2 then begin result:=2; exit; end;
result := Sayi * FaktoryelHesapla(Sayi - 1);
end;
:
// kullanımı :
Faktoryel := FaktoryelHesapla(Sayi);
:


Bu mesaja 1 cevap geldi.

D Dankır Konu Sahibi
14 yıl (262 mesaj)

M marmix
13 yıl (787 mesaj)
arkadaşlar bana bunun C programını yazabilirmisiniz


Bu mesaja 1 cevap geldi.

S sixth
13 yıl (35 mesaj)
void fak()
{
y=1;s=1;
printf("sayi\n");
scanf("%d",&n);
while(s<=n){
y*=s;
++s;
}
printf("faktoryel %d = %d\n\n",n,y);
}


Bu mesaja 1 cevap geldi.

_ _conscript_
13 yıl (2464 mesaj)
C# için ise;


int a = convert.toint32(textbox1.text);    // kullanıcının text'e girdiği sayı alınır. 
int faktoriyel = 1; // toplam

for ( int i = a; i>0; i--)
{
faktoriyel = faktoriyel * i; // sayı kendisinden başlayarak 1 e kadar birer birer azaltılır ve çarpılır.
}

label1.text = faktoriyel.tostring(); // sonuc labelde gösterildi.





< Bu mesaj bu kişi tarafından değiştirildi _conscript_ -- 28 Aralık 2008; 22:03:55 >
Bu mesaja 1 cevap geldi.

F FrontLiner
13 yıl (2888 mesaj)
#include <stdio.h> 
int result=1;

int fakt(int a)
{
if (a==0)
return result;
else
result=a*fakt(a-1);
return result;}

int main()

{
int op=0;
scanf("%d",&op);
if (op==0 || op==1)
printf("Result is 1\n");
else
printf("Result is %d\n",fakt(op));
system("pause");
}


Recursive (yinelemeli) şekli olarak da bu kodu verebiliriz.. Recursive konusunun en temel örneğidir..



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.