23 Ocak 2013 Çarşamba

35 Faktoriyele kadar faktoriyel hesaplama


#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