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
sum_f.ccodice:#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); }
fatt.ccodice:#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; }
Non posso postare l'output poichè è una stampa senza fine.codice:#include <stdio.h> #include <stdlib.h> float fatt(float k) { float n=k-1; while(n>0) { k=k*n; n--; } return k; }
- Versione senza function sum_f (funzionante)
main.c
fatt.ccodice:#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); }
Outputcodice:#include <stdio.h> #include <stdlib.h> float fatt(float k) { float n=k-1; while(n>0) { k=k*n; n--; } return k; }
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

Rispondi quotando