[C++]Fattoriale di un numero

franbisc
Sono due giorni che tento di risolvere il "rompicapo" di sviluppare un programma che faccia il fattoriale di un numero positivo n.
Quello che ho scritto è
#include <iostream>
using namespace std;

int main()   {
    int n,i,f;

 cout<<"Inserisci n\n";
 cin>>n;
 i=1;

 for (f=1;;i++)  {

     f=f*i;
     cout<<"il fattoriale è " << f <<endl;
 }
 return 0;
}

Proprio non capisco dove sbaglio.

Il prof ci ha anche dato un suggerimento,ma proprio non mi dice niente,e cioè di moltiplicare tra loro i primi n numeri,memorizzare questo risultato parziale in una variabile e poi ad ogni ciclo moltiplicarla per il nuovo numero

Risposte
apatriarca
Un piccolo suggerimento.
for (f=1;;i++)  {
     f=f*i;
     cout<<"il fattoriale è " << f <<endl;
}

Stai calcolando il fattoriale di n (o almeno ci stai provando). Che cosa manca in quel pezzo di codice?

franbisc
"apatriarca":
Un piccolo suggerimento.
for (f=1;;i++)  {
     f=f*i;
     cout<<"il fattoriale è " << f <<endl;
}

Stai calcolando il fattoriale di n (o almeno ci stai provando). Che cosa manca in quel pezzo di codice?

L'inizializzazione di i a 1 o la condizione del for?

vict85
Entrambe, ma principalmente la seconda. I cicli infiniti non sono un buon modo di implementare qualcosa. Sposta anche il cout fuori dal ciclo se vuoi stampare solo l'ultimo. Rimane comunque un non trascurabile problema di usabilità (andrai presto oltre il limite di calcolo degli int).

franbisc
Ok,ora funziona,con la condizione che $i<=n$.Ma non ho capito l'ultima osservazione

vict85
"Mifert4":
Ok,ora funziona,con la condizione che $i<=n$.Ma non ho capito l'ultima osservazione


\(\displaystyle 100! > 9\times 10^{157} \)

Non riesci a memorizzarlo in un int... Se non ricordo male già $21!$ non è rappresentabile con un int

franbisc
"vict85":
[quote="Mifert4"]Ok,ora funziona,con la condizione che $i<=n$.Ma non ho capito l'ultima osservazione


\(\displaystyle 100! > 9\times 10^{157} \)

Non riesci a memorizzarlo in un int... Se non ricordo male già $21!$ non è rappresentabile con un int[/quote]
un long int basta?

apatriarca
No.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.