Visualizzazione dei risultati da 1 a 2 su 2

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2014
    Messaggi
    26

    [C] Passaggio di una variabile ad una function. Stranezza del CodeBlocks?

    Ciao a tutti,
    ho a che fare (o almeno mi auguro) con una stranezza del codeblocks, anche perchè credo di non aver sbagliato niente nell'impostazione del programma.
    Praticamente,passando la variabile alla function, il programma non legge il suo valore. Mi sapreste dire che errore ho commesso oppure se ho a che fare con una stranezza del codeblocks che mi ha fatto perdere una giornata intera?

    Versione con function:
    main.c
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    
    float sum_f(float);
    float fatt(float);
    
    main()
    {
        float x=3;
        float sum_dou,err_ass,err_rel;
        float sum_flo;
        float e = 2.71828183;
    
    
    
        sum_flo=sum_f(x);
    
        printf("\nSomma in float = \t%e\nSomma in double = \t%22.16e\n",sum_flo,sum_dou);
    
        e=pow(e,x);
    
        printf("\n e^x= %22.16e\n",e);
    }
    sum_f.c
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <float.h>
    #include <math.h>
    
    float sum_f(float x)
    {
        float k=0;
        float somma=0;
    
        while(pow(x,k) / fatt(k) >= FLT_EPSILON)
              {
                  somma = somma + (pow(x,k)/fatt(k));
                  printf("\n s(%1.0f)=%20.18f\n",k,somma);
                  k++;
    
              }
    
              printf("\nPer il tipo float sono state eseguite %1.0f somme.\n",k);
    
              return somma;
    }
    fatt.c
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    float fatt(float k)
    {
        float n=k-1;
    
        while(n>0)
        {
            k=k*n;
            n--;
    
        }
        return k;
    }
    Non posso postare l'output poichè è una stampa senza fine.

    - Versione senza function sum_f (funzionante)
    main.c
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <float.h>
    
    
    float fatt(float);
    
    main()
    {
        float x=3;
        float sum_dou,err_ass,err_rel;
        float sum_flo;
        float e = 2.71828183;
        float k=1;
        float somma=0;
    
    
    
       while(pow(x,k) / fatt(k) >= FLT_EPSILON)
              {
                  somma = somma + (pow(x,k)/fatt(k));
                  printf("\n s(%1.0f)=%20.18f\n",k,somma);
                  k++;
    
              }
    
              printf("\nPer il tipo float sono state eseguite %1.0f somme.\n",k);
    
    
        printf("\nSomma in float = \t%e\n",somma);
    
        e=pow(e,x);
    
        printf("\n e^x= %22.16e\n",e);
    }
    fatt.c
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    float fatt(float k)
    {
        float n=k-1;
    
        while(n>0)
        {
            k=k*n;
            n--;
    
        }
        return k;
    }
    Output
    http://imageshack.com/a/img827/4228/n780.png


    Nel caso dovesse essere d'aiuto nel rispondermi,nella prima versione (la non funzionante) passando la variabile 'x' come int e non come float, il programma effettua il numero giusto di somme ,ma senza sommare la variabile 'somma',ovvero stampando solo il conenuto del nuovo addendo (pow(x,k) /fatt(k) ).


    Grazie
    Ultima modifica di darth89; 10-02-2014 a 21:08

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 © 2025 vBulletin Solutions, Inc. All rights reserved.