Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
14019
Tıklama
0
Öne Çıkarma
faktöriyel hesaplayan program algoritması?
D
17 yıl
Yüzbaşı
Konu Sahibi

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



B
17 yıl
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
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
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
Yüzbaşı
Konu Sahibi

M
17 yıl
Yüzbaşı

arkadaşlar bana bunun C programını yazabilirmisiniz


Bu mesaja 1 cevap geldi.
S
17 yıl
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
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
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.