Approssimare e

di il
2 risposte

Approssimare e

"Scrivere un programma che approssimi il valore della costante matematica e, utilizzando la formula:
e = 1 + 1/(1!) + 1/(2!) +1/(3!) + 1/(4!) + ---"

Il mio codice (in basso) ha una funzione per calcolare il fattoriale, e sommando di volta in volta stampa i risultati parziali di e (es. 1 2 2.5 ecc ecc). Il problema è che stampa correttamente solo 1 e 2, successivamente stampa sempre 2 (output: 1 2 2 2 2 e così via). Sapete trovare l'errore?


#include <stdio.h>
#define LIM 10

int calcFatt ( int x ); /* Prototipo di funzione */

int main( void )
{
float e = 0;
int n;

for ( n = 0; n < LIM; n++ ){
e += 1 / calcFatt( n );
printf( "\n%f\n", e );
}

return 0;
}

int calcFatt( int x )
{
int i;
int fatt = 1;

if ( x == 0 ){
return 1;
}
else {
for ( i = 1; i <= x; i++ ) {
fatt *= i;
}
return fatt;
}
}


Grazie a tutti!

2 Risposte

  • Re: Approssimare e

    Scusate, riscrivo il codice:
    #include <stdio.h>
    #define LIM 10
    
    int calcFatt ( int x ); /* Prototipo di funzione */
    
    int main( void )
    {
        float e = 0;
        int n;
    
        for ( n = 0; n < LIM; n++ ){
            e += 1 / calcFatt( n );
            printf( "\n%f\n", e );
        }
    
        return 0;
    }
    
    int calcFatt( int x )
    {
       int i;
       int fatt = 1;
    
       if ( x == 0 ){
          return 1;
       }
       else {
          for ( i = 1; i <= x; i++ ) {
                fatt *= i;
             }
          return fatt;
       }
    }
    
  • Re: Approssimare e

    Devi scrivere

    e += 1.0 / calcFatt( n );

    altrimenti il risultato della divisione è un intero
Devi accedere o registrarti per scrivere nel forum
2 risposte