DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
8
Cevap
14105
Tıklama
0
Öne Çıkarma
faktöriyel hesaplayan program algoritması?
D
17 yıl (292 mesaj)
Yüzbaşı
Konu Sahibi

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

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



B
17 yıl (567 mesaj)
Yüzbaşı

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
17 yıl (778 mesaj)
Yüzbaşı

- 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
17 yıl (778 mesaj)
Yüzbaşı

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
17 yıl (292 mesaj)
Yüzbaşı
Konu Sahibi

M
17 yıl (2584 mesaj)
Yüzbaşı

arkadaşlar bana bunun C programını yazabilirmisiniz


Bu mesaja 1 cevap geldi.
S
17 yıl (60 mesaj)
Onbaşı

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.
_
17 yıl (13518 mesaj)
Yarbay

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
17 yıl (5801 mesaj)
Yarbay

#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.