[C++] Silnia przy użyciu tablic

Chciałem napisać program liczący silnie podanej liczby, ale nie do końca mi to wyszło. Tutaj listing programu:

#include 

using namespace std;


int main()

{

int i, n, t[n];

int iloczyn=0;


cout<<"Podaj liczbe ktorej chcesz obliczyc silnie\m";

cin>>n;


for(i=1; i<=n; i++)

{

t[i]=i;

}

for(i=1; i<=n; i++)

{

iloczyn*=t[i];

}

cout<
system("pause");

}

Tablica jest poprawnie zapełniana liczbami ale problem mam z mnożeniem wszystkich elementów. Wyrażenie iloczyn*=t _ ; _, zawsze zwraca wartość 0. Mógłbym mi ktoś napisać co jest nie tak?

Z góry dziękuje

Wartość początkowa iloczyn ustawiłeś na zero, mnożenie razy zero daje zero.

Przy jedynce, też nie działa :frowning:

…edit

Jednak działa, zły program kompilowałem :stuck_out_tongue:

Nie, nie zadziała. Dopiero teraz zauważyłem tę głupotkę:

int i, n, t[n];

Tak na pewno nie zaalokujesz poprawnie tablicy. Musisz alokować tablicę dynamicznie (pomijając sens alokowania tablicy do obliczenia silni).

Może coś takiego ? ;p

#include 

using namespace std;

int i,n,q=1;

int main(){

cout<<"Podaj liczbe ktorej chcesz obliczyc silnie" <
cin>>n;

cout<
for(i=1; i<=n; i++)

{

	q*=i;

}

cout<
system("pause");

}

[/code]

Program działa poprawnie i wyświetla poprawne silnie.

Który? Masz na myśli ten z:

int i, n, t[n];

?

Niewiele kompilatorów to skompilują (tylko gnu i mingw). Ale jeżeli już skompiluje to przydzieli tablice t na n elementów z tym że w n w tym momencie są jakieś śmieci, o ile nie zabraknie pamięci i później wprowadzona wartość n nie okaże się większa niż te śmieci które w niej byli to będzie działać. Ale chyba za dużo tych jeżeli …