PDA

Visualizza la versione completa : C++ Creare Fattoriale


Q.Pagliuca
23-01-2010, 13:07
Avrei bisogno di aiuto per creare un programma che calcoli il fattoriale di un numero!!... purtroppo non ho idee di come impostarlo!

YuYevon
23-01-2010, 13:15
Sul forum ci sono decine di discussioni su come calcolare ("creare"? :D) il fattoriale di un numero. Se proprio non ci riesci ti basta fare una ricerca, ma ti consiglio di provare a farlo da solo perché è facile e avere il codice pronto non ti serve a molto.

oregon
23-01-2010, 13:25
Originariamente inviato da Q.Pagliuca
purtroppo non ho idee di come impostarlo!

Beh ... mi sembra impossibile non avere idee, se sai come si calcola "con carta e penna" un fattoriale !

Q.Pagliuca
23-01-2010, 13:36
Originariamente inviato da oregon
Beh ... mi sembra impossibile non avere idee, se sai come si calcola "con carta e penna" un fattoriale !

allora il fattoriale si calcola n*(n-1)*(n-2) ecc peròmica posso mettermi a scrivere la formula all'infinito -.-' ..è qst il problema ..perchè avevo pensato di fare il caso base cioè " if (n = 0 || n=1) fattoriale = 1" e così poi riportare il fattoriale di ogni numero al caso base ..però così nn funziona perchè dovrei creare la funzione fattoriale ...ma che non sono riuscito a creare :s

oregon
23-01-2010, 13:39
Quando calcoli il fattoriale di un numero, n è definito, non è più variabile.

Quindi, se chiedi di calcolare il fattoriale di 5, devi calcolare

5*4*3*2*1

Di conseguenza, la prima cosa da fare è chiedere il numero di cui si vuole conoscere il fattoriale, e la seconda, un ciclo da 1 al numero indicato ... all'interno del ciclo fai le moltiplicazioni.

gianvituzzi
23-01-2010, 15:42
stavo leggendo una articolo su Template metaprogramming ed ho trovato del codice che potrebbe fare al caso tuo:



int factorial(int n)
{
if (n == 0)
return 1;
return n * factorial(n - 1);
}

void foo()
{
int x = factorial(4); // == (4 * 3 * 2 * 1 * 1) == 24
int y = factorial(0); // == 0! == 1
}


http://en.wikipedia.org/wiki/Template_metaprogramming

MItaly
23-01-2010, 15:47
Avevo letto un articolo di Bjarne Stroustrup in cui ammetteva di essere rimasto lui stesso a bocca aperta quando aveva visto una funzione di calcolo del fattoriale risolta tutta a compile-time grazie ai template.

c_junior
23-01-2010, 16:14
Originariamente inviato da MItaly
Avevo letto un articolo di Bjarne Stroustrup in cui ammetteva di essere rimasto lui stesso a bocca aperta quando aveva visto una funzione di calcolo del fattoriale risolta tutta a compile-time grazie ai template.
saresti cosi gentile da dirmi come hanno fatto?


comunque entrato IT il fattoriale o lo calcoli con le funzioni ricorsive oppure usi un ciclo for niente di più falcie:


int fat(int n){
temp=0;
for(int i=n,i>0,i--)
temp=temp*i;

return temp;

}


penso sia giusta però non l'ho controllata la funzione...e comunque c'è sempre quella ricorsiva...

Q.Pagliuca
23-01-2010, 16:17
Originariamente inviato da c_junior
saresti cosi gentile da dirmi come hanno fatto?


comunque entrato IT il fattoriale o lo calcoli con le funzioni ricorsive oppure usi un ciclo for niente di più falcie:


int fat(int n){
temp=0;
for(int i=n,i>0,i--)
temp=temp*i;

return temp;

}


penso sia giusta però non l'ho controllata la funzione...e comunque c'è sempre quella ricorsiva...


già è proprio quella ricorsiva a cui avevo pensato ma mi manca qlks per completare il ragionamento e scrivere il programma ..c'è qlks che mi sfugge :S

MItaly
23-01-2010, 16:17
Originariamente inviato da c_junior
saresti cosi gentile da dirmi come hanno fatto?

Guarda il link postato poco fa.



comunque entrato IT il fattoriale o lo calcoli con le funzioni ricorsive oppure usi un ciclo for niente di più falcie:
Senza contare che la soluzione iterativa è molto più efficiente.

Loading