#include "stdafx.h"
#include <iostream>
using namespace std;
void olustur(int x) { // efekanpulatli.blogspot.com 35 faktoriyele kadar faktoriyel hesaplama
int fact[1000]={1}; // dikkat 35 faktoriyelden sonrasini hesaplamaz.
int elde=0,x2;
for(;x>=1;x--) { // x 1 e kadar for dongusu dondurur
for(int a=0;a<44;a++) { //her dizi elemanını çarpar
if(elde!=0) { // elde 0 dan farklıysa burayı çalıştır
if(fact[a+1] == 0) {
int b = (fact[a] * x) + elde;
fact[a] = ((fact[a] * x) + elde) % 10;
fact[a+1] = b / 10;
elde=0;
a++;
} else if(fact[a+1] != 0) {
int b = (fact[a] * x) + elde;
fact[a] = ((fact[a] * x) + elde) % 10;
elde = b / 10;
}
}
else if((fact[a] * x) < 10 && elde ==0) {
fact[a]*=x;
} else if((fact[a] * x) > 9 && elde == 0){
elde = (fact[a] * x) / 10;
fact[a] = (fact[a] * x) % 10;
}
}
}
for(int i=40;i>=0;i--) { // başını 0 a kadar yazdırma
if(fact[i]!=0) { x2 = 0; }
if(x2==0) {
cout << fact[i] ; } }
}
int main()
{
int a ;
cout << "enter number which will be fact" << endl;
cin >> a;
olustur(a);
system("pause");
return 0;
}

Hiç yorum yok:
Yorum Gönder