Problema che mi chiede di approssimare la costante e.

di il
9 risposte

Problema che mi chiede di approssimare la costante e.

Anteprima: Problema che mi chiede di approssimare la costante e.
Ciao a tutti ragazzi, sono nuovo del forum. Premetto che nn sono un programmatore,all'uni studio tutt'altro e sto studiando il c da autdodidatta a tempo perso,per divertimento. Ho un problema con un programma con la seguente traccia:
Scrivete un programma che che approssimi il valore di e ultilizzando la formula e=1 + 1/1! + 1/2!...

Il programma deve prendere in input un numero che detrminerà l'approssimazione.
Non ho fatto le funzioni,il programma dovrà usare dei cicli (possibilmente neanche for ma semplici while dato che in questo capitolo ancora nn è stato spiegato,anche se so come opera il for)


questo è il prog che ho scritto ma nn funziona nel senso che la shell si chiude quando premo invio dopo aver inserito il numero n.
#include <stdio.h>
int main (void) {
    int n; 
    int i=1;
    int j;
    int fattoriale=1;
    float e=1.00;
    printf("Inserisci un numero che determinerà l'approssimazione del fattoriale:\n");
    scanf("%d", &n);
    
    
   while(i<=n){
               i++;
               i=j;
               while(j>0){
                          fattoriale = fattoriale * j;
                          j--;
                          
                          }
                          
                      e = e + (float)(1/fattoriale); 
                      }/*poichè 1 diviso il fattoriale è un numero con la virgola ma l'1 e il fattoriale sono interi ho aggiunto float affinche restituisca un numero con la virgola*/
                      printf("e approssimato è %f", e);
                      
                      fflush(stdin);
                      getchar();
                      return 0;
                      }

9 Risposte

  • Re: Problema che mi chiede di approssimare la costante e.

    Ciao zazi77,
    ci sono alcune cose che sicuramente sono sbagliate (oltre al fatto che non hai usato i tag code per racchiudere il codice e quindi hai perso l' indentazione)

    - La variabile j viene usata senza essere stata mai assegnata.
    - La variabile fattoriale dovrebbe essere riportata a 1 ad ogni giro del ciclo principale.
    - 1/fattoriale è una divisione fra interi e genera un intero, devi scrivere ad es 1.0/fattoriale, oppure 1/(double)fattoriale.
  • Re: Problema che mi chiede di approssimare la costante e.

    Barba59 innanzitutto grazie per aver risposto,ho cambiato le cose che mi hai suggerito ma nulla è cambiato,inoltre cosa intendi per tag code? l'indentazione io so che la mette l'editor in automatico ogni qual volta vado a capo.

    intendi \t?

    questo è il prog modificato
    #include <stdio.h>
    int main (void) {
        int n;
        int i=1;
        int j=1;
        int fattoriale=1;
        float e=1.00;
        printf("Inserisci un numero che determinerà l'approssimazione del fattoriale:\n"); 
        scanf("%d", &n);
        
        
       while(i<=n){
                   i++;
                   i=j;
                   while(j>0){
                              fattoriale = fattoriale * j;
                              j--;
                              
                              }
                             fattoriale=1;
                          e = e + (1.00/fattoriale); 
                          }
                          printf("e approssimato è %f", e);
                          
                          fflush(stdin);
                          getchar();
                          return 0;
                          }
  • Re: Problema che mi chiede di approssimare la costante e.

    I tag code te li ho messi io nel primo messaggio. Fai modifica del tuo primo messaggio e vedi cosa é cambiato. Quindi cambia di conseguenza anche il secondo. E leggi il regolamento.
  • Re: Problema che mi chiede di approssimare la costante e.

    Ok ho capito cosa sono,scusa ma nn sono pratico di forum di solito mi piace risolverle da solo le cose,vedrò di sbatterci un altro po' la testa. P.s. ho letto il regolamento
  • Re: Problema che mi chiede di approssimare la costante e.

    Ciao zazi77,
    intanto che ci batti la testa, sposta più in alto l' istruzione 'fattoriale=1' altrimenti ad 'e' sommi sempre 1.
  • Re: Problema che mi chiede di approssimare la costante e.

    Ok stamattina l'ho riguardato e ora il programma parte.
    Posto il codice.

    questo è con il for:
    #include <stdio.h>
    int main (void) {
        int n; 
        int i;
        int j=1;
        int fattoriale=1;
        float e=1.00;
        printf("Inserisci un numero che determinerà l'approssimazione del fattoriale:\n");
        scanf("%d", &n);
        
        for(i=1;i<=n;i++) {
                  
                   j=i;
                   fattoriale=1;
                   while(j>0) {
                              
                              fattoriale = fattoriale * j;
                              j--;
                              
                              }
                              
                          e = e + (1.00/fattoriale); 
                          }
                          printf("e approssimato è %f", e);
                          
                          fflush(stdin);
                          getchar();
                          return 0;
                          }
    

    questo è con il while:
    #include <stdio.h>
    int main (void) {
        int n; 
        int i=1;
        int j=1;
        int fattoriale=1;
        float e=1.00;
        printf("Inserisci un numero che determinerà l'approssimazione del fattoriale:\n");
        scanf("%d", &n);
        
        while(i<=n){
                   i++;
                   j=i;
                   fattoriale=1;
                   while(j>0){
                              fattoriale = fattoriale * j;
                              j--;
                              
                              }
                              
                          e = e + (1.00/fattoriale); 
                          }
                          printf("e approssimato è %f", e);
                          
                          fflush(stdin);
                          getchar();
                          return 0;
                          }
    
    inizialmente ottenevo risultati diversi,dopo aver rinominato quello con il for i risultati sono uguali, ma sono sbagliati. E' dovuto a un errore logico o a un errore di dichiarazione di varabili?
  • Re: Problema che mi chiede di approssimare la costante e.

    Ho provato a ricambiare il nome e mi esce, a cosa può essere dovuto?
    cioè se chiamo il prog con il while es.3.46 punto b
    il prog con il for es.3.46 punto b con for

    non esce

    se chiamo il prog con il while es.3.46 punto b
    il prog con il for giovanni ciociola

    esce
  • Re: Problema che mi chiede di approssimare la costante e.

    Sembrerebbe un chiaro segno di abuso di alcolici! È una battuta non te la prendere! ma quello che dici non ha senso, stai dicendo che cambiando il nome al programma il comportamento cambia? o ho capito male?

    Comunque i due programmi non sono equivalenti, quando converti un For in un While la terza espressione (i++) deve essere messa alla fine del ciclo non all' inizio.
  • Re: Problema che mi chiede di approssimare la costante e.

    Ahahahhaha tranquillo nn me la prendo,capisco che la cosa è insolita, e che potrei essere un po' esaurito per lo studio di patologia generale grazie per le numerose correzioni sei un/una grande boh l'unica cosa che mi viene in mente è che sembra che il computer riconosca il prog con il for uguale a quello col while perchè la parte iniziale del nome è uguale,lo so che nn ha senso eppure cambiava il risultato (ho provato più volte a cambiare nome). Cmq ora che i risultati sono uguali dopo la correzione ,nn ha più importanza grazie mille
Devi accedere o registrarti per scrivere nel forum
9 risposte