Çö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.
for döngüsü içerisindeki i, 8 ile başlıyor ama sen sorguda i<2 ise çalışsın diyorsun. Sence mantıklı mı? Başka hatalar da vardır ama onlara bakmayacağım.
 
Dostum ben C++ bilmiyorum fakat C# olarak yorumlarsam tam şu kısımda bir hata var.

C++:
 for(i=8;i<2;i-=1)

İ-=1 kısmında yanlışlık var yüksek ihtimalde.
 
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.
 
Çözüm
for döngüsü içerisindeki i, 8 ile başlıyor ama sen sorguda i<2 ise çalışsın diyorsun. Sence mantıklı mı? Başka hatalar da vardır ama onlara bakmayacağım.
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?
 
Son düzenleme:
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ış.
 
Son düzenleyen: Moderatör:

Technopat Haberler

Geri
Yukarı