[C++]Fattoriale di un numero
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 è
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
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
Un piccolo suggerimento.
Stai calcolando il fattoriale di n (o almeno ci stai provando). Che cosa manca in quel pezzo di codice?
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?
"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?
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).
Ok,ora funziona,con la condizione che $i<=n$.Ma non ho capito l'ultima osservazione
"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
"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?
No.