Esercizio calcolo fattoriale

di il
4 risposte

Esercizio calcolo fattoriale

Salve a tutti! ho implementato questo piccolo programmino per il fattoriale in c++ e sono tanto felice che funzioni!
solo che verificandolo mi da risultati corretti solo fino a 10! qualcuno saprebbe aiutarmi a capire come potrei ottimizzarlo fino a un numero più alto e perchè si presenta questo problema??
vi incollo qui il codice:

*/fattoriale/*
#include <iostream>
using namespace std;
int main()
{	int i,n,f; f=1; i=1;
	cout<<"inserire il numero per calcolarne il fattoriale"<<endl;
	cin>>n;
	if(n>=0)
	{
		if(n>0)
		while(i<n)
		{
			f=f*(i+1);
			i++;
		}
		else f=1;
	}
	else f=-1;
cout<<"il fattoriale del numero e':";
cout<<f<<endl;
cout<<"se il risultato del fattoriale è -1"<<endl;
cout<<"si è inserito un numero negativo del quale"<<endl;
cout<<"non e' possibile calcolarne il fattoriale"<<endl;
}

4 Risposte

  • Re: Esercizio calcolo fattoriale

    Vuoi dire che, ad esempio, 11! non funziona?
  • Re: Esercizio calcolo fattoriale

    oregon ha scritto:


    Vuoi dire che, ad esempio, 11! non funziona?
    Secondo me fino a 12! Ci arriva
  • Re: Esercizio calcolo fattoriale

    Usa i long long int (per gli amici long long) (intero a 64 bit) invece di int (intero a 32 bit)
    In alternativa, usa una libreria per il calcolo in precisione arbitraria, cosi' puoi calcolare anche il fattoriale di 1000.
  • Re: Esercizio calcolo fattoriale

    Il tipo di variabile che utilizzi non ha capacità infinita. Devi controllare i ranges dei tipi che utilizzi:

    Generalmente, su macchine a 32/64 bits
    
    int: Da –2.147.483.648 a 2.147.483.647
    long: Da –2.147.483.648 a 2.147.483.647
    long long: Da –9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
    
    nel caso di unsigned
    
    unsigned int: Da 0 a 4.294.967.295
    unsigned long: Da 0 a 4.294.967.295
    unsigned long long: 	Da 0 a 18.446.744.073.709.551.615
    
Devi accedere o registrarti per scrivere nel forum
4 risposte