Здравствуйте форумчане. Пишу программу, работа с большим факториалом. Я считаю факториал, если меньше 10, то обычным способом. А если больше 10, то считаю до 10! и результат передаю в процедуру, для дальнейшего домножения и вывода результата. Проблема в том, что выводит результат задом наперед и срезает первую цифру. Вот код, который нужно подправит, ну если конечно вам не трудно. Заранее извиняюсь за криво написанный код, зато сам.
| Код | #include "stdafx.h" #include "iostream" #include "math.h" #include "conio.h" using namespace std; int fact(int n) { int factorial=1; for(int i=1; i<=n; i++) factorial=factorial*i; return factorial; } void mult(int factorial ,int i) { int size2=0; int temp = factorial; int size = 0; int j; do // находим кол - во цифр в числе { temp /= 10; ++size; } while(temp>0); int *razb_fac = new int[size]; for(j = 0; j<size; ++j ) // разбиваем { razb_fac[j] = factorial % 10; factorial /= 10; } int *rez_mas = new int[size2]; int carry = 0; int k=0; for (k; k < size; k++) { carry=carry+ razb_fac[k] * i; rez_mas[k] = carry % 10; carry /= 10; cout<<rez_mas[k]<<" "; } } int _tmain(int argc, _TCHAR* argv[]) { int n,i,rez,rez2; cout<<"Enter n:"; cin>>n; if(n<=10) { rez=fact(n); cout<<"Factorial "<<n<<" this "<<rez; } if(n>10) { int factorial=1; for(i=1; i<=10; i++) factorial=factorial*i; mult(factorial,i); } getch(); return 0; }
|
|