Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Integrare polinomi da file di testo, dove il file di testo ha come primo numero il numero di polinomi, ogni polinomio ha come primo numero il grado e i coefficienti dal termine noto fino al grado massimo.*/
- #include <stdio.h>
- #include <stdlib.h>
- #define FILE_PATH "/home/aurelio/Desktop/informatica/filetxt/polinomi.txt"
- #define STRLEN 1024
- #define N_RETT 10000
- #define INF -2.0
- #define SUP 2.0
- typedef int* pint;
- typedef float* pfloat;
- typedef FILE* pfile;
- typedef char* pchar;
- double integrale(float inf, float sup, unsigned n_r, pfloat pcoeff, unsigned grado) {
- double dx,sum,y,x,xi;
- unsigned i,i_coeff;
- dx=(double)(sup-inf)/n_r;
- for(i=sum=0,x=inf;i<n_r;i++) {
- for(i_coeff=y=0,xi=1;i_coeff<=grado;i_coeff++) {
- y+=pcoeff[i_coeff]*xi;
- xi*=x;
- }
- sum+=y*dx;
- x+=dx;
- }
- return sum;
- }
- int main() {
- unsigned i_pol,i_coeff,numero_polinomi,grado;
- pfile pf;
- char s[STRLEN];
- pfloat pcoeff;
- double integ;
- if(NULL==(pf=fopen(FILE_PATH,"r"))) goto err_file;
- fscanf(pf,"%s",s);
- numero_polinomi=atoi(s);
- printf("Numero di polinomi da intergare pari a %d.\n",numero_polinomi);
- for(i_pol=0;i_pol<numero_polinomi;i_pol++) {
- fscanf(pf,"%s",s);
- grado=atoi(s);
- if(NULL==(pcoeff=malloc(sizeof(float)*(grado+1)))) goto err_mem;
- printf("Polinomio n.%d: ",i_pol+1);
- for(i_coeff=0;i_coeff<=grado;i_coeff++) {
- fscanf(pf,"%s",s);
- pcoeff[i_coeff]=atof(s);
- switch(i_coeff) {
- case 0:
- printf("%.2f",*pcoeff);
- break;
- default:
- if(pcoeff[i_coeff]<0) printf("%.2fx^%d",pcoeff[i_coeff],i_coeff);
- else if(pcoeff[i_coeff]>0) printf("+%.2fx^%d",pcoeff[i_coeff],i_coeff);
- break;
- }
- }
- printf("\n");
- integ=integrale(INF,SUP,N_RETT,pcoeff,grado);
- printf("L'integrale del polinomio %d valutato da %f a %f risulta %f\n",i_pol+1,INF,SUP,integ);
- free(pcoeff);
- }
- return EXIT_SUCCESS;
- fclose(pf);
- err_file:
- printf("Errore file non trovato\n");
- return EXIT_FAILURE;
- err_mem:
- printf("Errore memoria insufficiente\n");
- return EXIT_FAILURE;
- }
Advertisement
Add Comment
Please, Sign In to add comment