Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Calcolo numero di nepero
Forum - C/C++ - Calcolo numero di nepero - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 16:29
Domenica, 07/03/2010
Testo quotato

Postato originariamente da scarlett68:

Testo quotato

Postato originariamente da Poggi Marco:

Che IDE usi?
( Nun dirmi Borland c++ 3.1 ! )  


Si proprio quello  Borland Turbo C++ for windows 3.1. A scuola usiamo questo solo la versione più vecchia !
comunque ho provato come dici tu ma non funziona lo stesso anzi si blocca a n. 31900 e poi non risponde più



Ecco perchè si blicca a 31900!

Borland c++ 3.1 utilizza il vechio standard c++.
Di conseguenza il tipo int è composto da soli 2 byte, e il suo reng va da -32768 a 32767.
Per lavorare con numeri interi maggiori c'è a disposizione il tipo long o unsigned long.

Il programma si blocca anche dichiarando n long double perche, probabilmente, nella condizione di uscita dal ciclo dichiari " while   (n<10000000); ".
Così facendo 10000000 viene convertito in tipo int, con conseguente problema di overflow.
In questi casi devi dichiarare  " while   (n<10000000UL); "
Il suffisso UL indica al compilatore di donsiderare il numrro unsigned long.


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:21
Domenica, 07/03/2010
Calma ... spieghiamoci ... tu parli di 10000000 di RIPETIZIONI o 10000000 di CIFRE decimali?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 17:27
Domenica, 07/03/2010
Certamente 10000000 riprtizioni.
Non tutti sono in grado di calcolare e con 10000000 cifre significative!

PM Quote
Avatar
scarlett68 (Normal User)
Newbie


Messaggi: 10
Iscritto: 05/03/2010

Segnala al moderatore
Postato alle 21:19
Domenica, 07/03/2010
Mi dispiace non sapermi spiegare! Io parlo di applicare la formula (1+1/n)^n con n crescente fino ad arrivare a 10000000 quindi
n        e
1    2          dato da (1+1/1)^1 =2
10      2,5937425  dato da (1+1/10)^10= 2,5937425
50    2,6915880
100    2,7048138
500    2,7155685
1000    2,7169239
5000    2,7180101
10000    2,7181459
......
......
10000000   .........?

Il mio programma si blocca dopo 31900 (n) senza riuscire ad andare oltre e comunque come valore numerico si ferma alle prime 6 cifre

Ultima modifica effettuata da scarlett68 il 07/03/2010 alle 21:22
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 21:27
Domenica, 07/03/2010
Hai modificato il il tipo alle variabili?

In output vedi solo 6 cifre perche il c++ è preimpostato così.
Se vuoi una precisione maggiore devi usare la funzione setprecision.
Vedi quì: http://www.cplusplus.com/reference/iostream/manipulators/s ...

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6403
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:32
Domenica, 07/03/2010
Testo quotato

Postato originariamente da scarlett68:

Mi dispiace non sapermi spiegare! Io parlo di ...



Prova così ...

Codice sorgente - presumibilmente C#

  1. double e;
  2.         long int n=1;
  3.  
  4.         cout.precision(17);
  5.  
  6.         do
  7.         {
  8.                 e = pow((double)(1.0 + 1.0/n), (double)n);
  9.  
  10.                 if((n % 1000) == 0)
  11.                         cout << n << '\t' << e << endl;
  12.  
  13.                 n= n+1;
  14.     } while (n<=10000000);



Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
scarlett68 (Normal User)
Newbie


Messaggi: 10
Iscritto: 05/03/2010

Segnala al moderatore
Postato alle 22:40
Domenica, 07/03/2010
grandeeeee!!!!  Grazie,  erano tre giorni che smanettavo

Ultima modifica effettuata da scarlett68 il 07/03/2010 alle 22:47
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo