Witam. Mam do napisania program liczący silnię z dużych liczb. Termin wysłania to dzisiaj do północy :D Ogólnie to wszystko mi pięknie działa, elegancko silnia jest liczona, jednak mam mały problem. Jest on raczej banalny, ale jakoś nie mogę sobie z nim sam poradzić... Jako, że czasu zostało niewiele piszę do Was z prośbą o pomoc, pewnie jakoś w końcu sam bym do tego doszedł, ale przyznaję, trochę późno się za to zabrałem :/
Poniżej znajduje się cały kod. Problem polega na tym, że silnia wyświetlana jest od razu po wpisaniu liczby, z której ma być policzona silnia. A chodzi o to, żeby najpierw podać wszystkie liczby, a następnie mają zostać wyświetlone po kolei wyniki.
Dla przykładu.
Po wpisaniu tych liczb:
3 - to jest liczba, która określa z ilu liczb chcemy policzyć silnię
7
10
20
Powinno wyświetlić:
5040
3628800
2432902008176640000
Mi jednak wyświetla wyniki między tymi liczbami. Podam 7, to od razu wyświetli się wynik 5040 i dopiero potem mogę podać następną liczbę.
Oto kod:
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace System;
using namespace std;
int main()
{
int C;
int k;
unsigned int cyfry[10000];
for (int i = 1; i < 10000; i++) cyfry[i] = 0;
cyfry[0] = 1;
cin >> C;
if (C>=1 & C<=100)
{
int * n = new int[C];
for (int i = 0; i < C; i++)
{
cin >> n[i];
if (n[i]<0 || n[i]>1000)
{
delete[] n;
exit(0);
}
for (int j = 1; j <= n[i]; j++)
{
for (k = 0; k < 10000; k++) cyfry[k] *= j;
for (k = 0; k < 10000 - 1; k++)
{
cyfry[k + 1] += cyfry[k] / 10;
cyfry[k] %= 10;
}
}
for (k = 10000 - 1; k >= 0 && cyfry[k] == 0; k--);
if (k < 0)
puts("0");
else
for (; k >= 0; k--)
putchar('0' + cyfry[k]);
for (int i = 1; i < 10000; i++) cyfry[i] = 0;
cyfry[0] = 1;
}
delete[] n;
}
else exit(0);
system("pause");
return 0;
}