C'de faktöriyel bulan program yazma

Me_vs_world

Hectopat
Katılım
15 Temmuz 2019
Mesajlar
24
int i;
int sayac;
printf("Bir sayi giriniz: ");
scanf("%d",&sayac);
for(i=sayac;i>0;i--)
{sayac=i;
printf("%d\n",sayac);
}
Bu kadarını hallettim. Çalıştır tuşuna basınca girdiğiniz sayıdan 1'e kadar ki sayıları yazıyor fakat gerisini nasıl yapacağımı bulamadım bri türlü. Yardımcı olur musunuz?
 
Son düzenleyen: Moderatör:
C bilmesem de A ve B adında değişken belirleyin. A söylenen sayı olsun ve sonrasında bir eksilsin. B ise A'nın o anki değeri ile çarpımı olsun. Yani B=B*A olacak her döngüde. Döngü sonunda ise A=A-1 diyeceksiniz. Tabii bu ifadeler C'de geçerli mi bilmiyorum ama bir şekilde halledilebilirler.
 
B*=A
A-=A
Olarak değiştirsek olur mu? Biraz unutmuşum da.
Python için konuşuyorsanız;
B*=A ile B=B*A aynı işlevdedir.
A-=A ile A=A-1 aynı işlevde değil.
A-=1 ile A=A-1 aynı işlevde olur.

Ben bu şekilde kullanmayı sevmediğim için öyle örnek vermiş bulundum.
 
int toplam=1 tanıt bir tane.
for(i=1;i<=sayac;i++){
toplam=toplam*i;
}
burdaki toplam sayac değişkenine atadığın sayının faktöriyelini verir.
int i;
int sayac=1;
int toplam=1;
printf("Bir sayi giriniz: ");
scanf("%d",&sayac);
for(i=1;i<=sayac;i++)
{toplam=toplam*i;
printf("%d\n",toplam);
} şu şekilde yaptım ve sonucu doğru veriyor fakat sonuçtan önceki basamakları da yazıyor onlar çıkmadan bu kodu nasıl yazabilirim
 
int i;
int sayac=1;
int toplam=1;
printf("Bir sayi giriniz: ");
scanf("%d",&sayac);
for(i=1;i<=sayac;i++)
{toplam=toplam*i;
printf("%d\n",toplam);
} şu şekilde yaptım ve sonucu doğru veriyor fakat sonuçtan önceki basamakları da yazıyor onlar çıkmadan bu kodu nasıl yazabilirim

Genelde recursive olarak çözülür ama iterative olarak da çözebilirim isterseniz.

C:
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

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

int main(int argc, char *argv[]) {
    
    int a;
    scanf("%d", &a);
    printf("Sayinin faktoriyeli: %d", faktoriyel(a));

    return 0;
}
 
int i;
int sayac=1;
int toplam=1;
printf("Bir sayi giriniz: ");
scanf("%d",&sayac);
for(i=1;i<=sayac;i++)
{toplam=toplam*i;
printf("%d\n",toplam);
} şu şekilde yaptım ve sonucu doğru veriyor fakat sonuçtan önceki basamakları da yazıyor onlar çıkmadan bu kodu nasıl yazabilirim
printf("%d\n",toplam);
bunu forun dışına yaz.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı