Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C++] fattoriale

  1. #1

    [C++] fattoriale

    ciao raga, il mio prof, mi ha chiesto di realizzare un programma che calcola il fattoriale.
    Io l'ho realizzato:
    codice:
    #include <iostream>
    
    using namespace std;
    
    int x;
    float fatt;
    long double fattoriale (float N);
    
    int main()
    {
        cout<<"FATTORIALE"<<endl;
        cout<<"Inserisci il numero = ";
        cin>>x;
        fattoriale(x);
        cout<<fatt<<endl;
        system("PAUSE");
    }
    
    long double fattoriale (float N)
    {
      fatt=1;   
      for (i=1;i<N+1;i++)
      fatt=fatt*i; 
      return fatt;    
    }
    il problema e' che il mio prof, non vuole che il programma si 'imballi' (cioe' non funziona piu'), quando inserisco ad esempio (x=1000000).
    Come devo fare?
    Adesso io mi chiedevo, se c'era qualche altra dichiarazione di variabili che possono contenere valori piu' grandi

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    definisci x come un long, o long double..

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Perché hai dichiarato quelle variabili globali?

    Comunque il tuo professore è consapevole del fatto che il fattoriale di 1000000 è un numero spropositatamente grande? Non esiste alcun tipo di dato primitivo che lo possa contenere, che io sappia... e sempre secondo quello che so io puoi risolvere solo ricorrendo a delle librerie apposite per la gestione dei grandi numeri (io uso a volte la NTL).

    Sicuro che il tuo professore non intendesse semplicemente che devi inserire un controllo per verificare che il numero rientri all'interno di un range di valori calcolabili?
    every day above ground is a good one

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Originariamente inviato da cleaner
    definisci x come un long, o long double..
    E comunque avrebbe un range limitato di valori rappresentabili...
    every day above ground is a good one

  5. #5
    lui vuole che il programma funzioni in modo tale che puo' gestire anche numeri molto grandi.
    Io mi chiedevo se long double e' la massima memorizzazione che posso fare, se e' cio', dopo devo eseguire i controlli.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    si in effetti non ha molto senso la teoria del prof(dovrebbe darti un limite), io comunque definirei x come il tipo che può contenere il range massimo di valori, fatto questo ti salvi,almeno in parte ^^

  7. #7
    in effetti...
    Ma in C++ non esiste il double double?? o altre dichiarazioni che possono contenere valori piu' grandi di 'long double'???

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Devi usare una libreria per gestire numeri a precisione arbitraria:

    http://gmplib.org/

    http://www.di-mgt.com.au/bigdigits.html

    http://spinning-yarns.org/michael/mpi/

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.