Şimdi Ara

faktöriyel hesaplayan program algoritması?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
0
Favori
13.893
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Mesela 5 girdiğimizde 5! i hesaplayacak program algoritmasını nasıl yazarız?



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




  • 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);
    :
  • teşekkürler
  • arkadaşlar bana bunun C programını yazabilirmisiniz
  • 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);
    }
  • 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 >
  • #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..
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.