Çözüldü C'de faktöriyel hesaplama aracı neden çalışmıyor?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

420957

Hectopat
Katılım
26 Ocak 2021
Mesajlar
2.719
Çözümler
11
Hocalarım kod hata vermiyor ama birşey yazdırmıyor. Sebebi nedir?
Her çarpımda yazdırsın istiyorum. O yüzden döngü içinde yazdırıyorum.
Kod:
#include <stdio.h>
#include <stdlib.h>

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

int main() {

// faktöriyel hesaplama
    int sayi=9;
    int i;
    for(i=8;i<2;i-=1)
    {
        sayi=sayi*i;
        printf("%d",sayi);
    }
    return 0;
}
 
Çözüm
Hocalarım kod hata vermiyor ama birşey yazdırmıyor. Sebebi nedir?
Her çarpımda yazdırsın istiyorum. O yüzden döngü içinde yazdırıyorum.
Kod:
#include <stdio.h>
#include <stdlib.h>

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

int main() {

// faktöriyel hesaplama
    int sayi=9;
    int i;
    for(i=8;i<2;i-=1)
    {
        sayi=sayi*i;
        printf("%d",sayi);
    }
    return 0;
}
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 main() {

// faktöriyel hesaplama
    int sayi=9;
    int i;
    for(i=8;i>=2;i--)
    {
        sayi=sayi*i;
        printf("%d\n",sayi);
    }
    return 0;
}

Bu çalışacaktır.
hocam kodda biraz değişiklik yaptım, öncelikle bu işlemi bir fonksiyon haline getirdim. Bu fonksiyona deger gönderiyorsunuz ve o da değeri hesaplayıp size res (result = sonuç)'i gönderiyor. Result'ı da isterseniz bir değişkene atarsınız isterseniz direkt yazdırırsınız artık gerisi size kalmış.
Teşekkürler ama buna gerek yoktu. Sadece hatamı öğrenmek istiyordum.
 
Bu arada attığım kod çalışır durumda, denedim.

Teşekkürler ama buna gerek yoktu. Sadece hatamı öğrenmek istiyordum.
Hocam aslında bu attığım kod ile kendi kodunuzu karşılaştırırsanız hatanızı öğrenebilirsiniz. Hata avcılığı yapmak yerine rewrite atmak daha kolay geldi, neyse.

Kodunuzda i'nin nereden geldiğini ve neye göre belirlendiğini anlamadım mesela ben.
 
Hocam oradaki kod i 2'den küçük olunca döngüden çık demek olmuyor mu?
Yoksa oradaki kod i 2'den küçük olduğu sürece döngüde kal demek mi oluyor?
i<2 olarak yazdığın yer koşul kısmı. i başlangıçta 8 olduğu için i<2 koşulu hiçbir zaman doğru olmayacak ve döngü hiç çalışmayacak.
 
Teşekkürler ama buna gerek yoktu. Sadece hatamı öğrenmek istiyordum.

İ<2 olarak yazdığın yer koşul kısmı. İ başlangıçta 8 olduğu için i<2 koşulu hiçbir zaman doğru olmayacak ve döngü hiç çalışmayacak.

Hatanı arkadaş doğru açıklamış. Yukarıdan aşağıya indiğin döngülerde benim attığım kod mantığını kullanırsın. Azaltma kısmında ise sayı azaltmanın bir mantığı vardır pre-post araştırman yararına olabilir her zaman i-- veya --i kullanılmaz.
 
C:
#include <stdio.h>

int calculate(int val) {
    int res = val;

    while (val != 1) {
        val --;
        res = res * val;
    }

    //res *= 1;

    return res;
}

int main() {

    printf("%d",calculate(9));
    return 0;
}

Hocam kodda biraz değişiklik yaptım, öncelikle bu işlemi bir fonksiyon haline getirdim. Bu fonksiyona deger gönderiyorsunuz ve o da değeri hesaplayıp size res (result = sonuç)'i gönderiyor. Result'ı da isterseniz bir değişkene atarsınız isterseniz direkt yazdırırsınız artık gerisi size kalmış.
Hocam aslında böyle c++ kodları beyin jimnastiği gibi bir şey yorumlarken insan cidden zevk alıyor başkasının yazdığı bir kodu.
 

Technopat Haberler

Yeni konular

Geri
Yukarı